API overhaul

+1 For later :)