Initial refactoring
Update README
Do proper checks against length
Remove useless tests folder
Check for required args
Use proper deferred returns
Add initial tests
Moar

+ Update comments
+ Add a couple of tests