major breaking changes, as start of a complete rewrite