Added the Reader interface and implementation