typesafe context model