Reader implementation