IS FINISHED! Minus comments. Need to do that.