lab3 - clean implementation started