implementing level 2