sync commit
sync commit #2
sync commit #3
sync commit #4
created new classes for better project structure
Fixed some bugs in the passes