Reorganize project
Create abstract factories