#6 defined the Repository interface
#6 added basic implementation of the entity repository
#6 fixed an error on checking if the entity constructor was correct
#6 added how engines are defined and created