include state pattern