Main source code for assignment