overall improvements, renaming, adding tests and improving Demo