Making backward read work
Refactoring (partly)
Further step refactoring to Reader