starrting on subclassing state