main contract