typesafe operations