Implement new session types and update another
This MR implements the changes requested in #241 (closed).
It supersedes and contains !19 (merged) and !20 (merged).
This MR implements the changes requested in #241 (closed).
It supersedes and contains !19 (merged) and !20 (merged).