recursive strategy