added tests
refactored Entity into BaseEntity and made it so subclasses can be properly initialized with their parent's properties