Initial commit of the respository.
Passing all tests, first working version.

TODO: fix lint errors.