#1 prepare project
#2 Singleton pattern
#3 Composite pattern