WIP implementation refactoring