introduce scoped session type