Split out Environment class
WIP