initial commit without tests
unnecessary dependencies are removed
tests project added.
refactoring for writing dependency injection container.