+implemented Abstract Factory pattern
+ refactored like controller (State pattern implemented)
Merge pull request #14 from zatorsky/master

added few  changes