cleaned up + prepared for multilevel