Initial commit: base implementation working, need to write better tests
and a short tutorial