Code commented and looked through for any improvements.