reading is now fully implemented