add contract-by-state method