Added initial project structure.
Continued implementation.
Added result display.
Did some refactoring.
Added some unit tests.