reading: state pattern