more flexibility in recursive adding