api draft

still needs some work