session 1, functional I/O