first source files
type field as an alternative to virtual functions