merging reworkapi to master

The rework is almost there, might as well merge so that users can get the new api easier