Models use enums

Adding required fields to entity classes. Moving from strings for restricted values to use of enums directly in Entity classes. Cleanup.