Extract ReadSession interface
Begin rewriting timeout controller

Still need to decide how to handle finished case for timeout controller
and read session