add menu, type definitions, print functions, compare function