Finished #3. Bug tested and should be working correctly.