more work on virtual entities, unit tests passing woot