UNFINISHED: half-done refactoring