reorg strategy pattern code
state pattern: classic implementation OK