second commit consists of main code