Implemented features outlined in Issues #1, #2 amd #3.