Initial commit

Porting all the code from Qiita and extending the tests.
should import config so that it is easily accessible