sweeping api changes
Still doing major rework here