Naming

Type variables don't have to be only a single letter, though that is common. If you pick a longer name you are generally expected to name them as if they were classes.

class Box<Data> {
    Data data;
}