This version simplifies the api a lot, eliminating unnecesary complexity and reducing the library to a few classes only.