Use a better param name in Environment.inherit
Access state using readers not instance variables
Turn Environment#register into a command method