working and documented and tested
big splat adding of docs