Fix some of the public api

realllly unhappy with some of this, but it's a learning exercise amirite