Use Factories; Fix depandancies