CSC2504 final project