API updated. Much better design.
Merge branch 'api-updates'