add None recursive version