broke the Context in two parts to simplify subtyping