add additional param and state checks