Resolves enhancements #1, #3, #4.