three factory
added three state