revert and refactor some breaking changes