start to support recursive rule