Move interfaces to own file
Refactor factories to own classes
Changed factory getters to inlined methods