Added volume control (and refactored).