Completely rethought and rebuilt from scratch API, much more easier to use