implimented readForward, needs testing