separate each state to small one and make each module more exquisiter