implemented AbstractLevel to reduce the code in the individual levels.