allow mixed generic and environment specific code