split constructor and factory method into two pairs
extract entity change processor out of entity
introduce LazyCache and tie it in with associations