Edited to fix minor issues.