implement recursive rule.