First version of the library. It does not cache.
Added a testing setup and cleaned some of the code in the main file.