Reorganize code; Add getRowStates()