Volume

Ported over some of @JStoker's volume changes from a diff he gave me.