- another major refactoring in the api (still fixing errors)