overriding vals has a terrible semantic in scala.
I'd make this a normal accessor function def getEnv(): Environment