Optional programming assignment 2
complete OPA2