experimental refactoring