refactoring - take advantage of record syntactic sugar
push session type variables far enough through the system that we can
use them in type signatures