-Done, except need to comment and remove redundancy