can now (actually) support levels of different sizes