(feat) Session.

It's necessary for the types to be in the impl so that the Session is informed.

The type checker needs hints either way, so we don't need to hardcode this into new.