implemented four levels