Stage 4 almost done
Merge with lab3 branch
Merge with lab3 completed