Renamed Params to be Environment. Added comments to the Apply mechanism to try and aid understanding