Initial commit

Porting all the code from Qiita and extending the tests.
Good call, added a check and still raising a KeyError but with a useful msg.