make Type abstract