refactoring; move to separate entity classes;
code updates; eval refinement