sketched out a full api, will work on coding stuff after lunch