experimental refactor