(master) added a bunch of functions and updated documentation as well as implementation where necessary