multilevel refactoring part 1
multilevel util