Initial version for assignment1 CMPUT301, haven't done yet.