design patterns, project setup