Major refactoring /w breaking changes