Add recursive support