the design seem to separate data into types, each type have a class, instances of typeX (or classX) can on