All three main objectives implemented