cleaning up the apis based upon feedback. may revert some of these changes. Also should add benchmarking for sanity checking