This is the final assignment for STAT545A