Recursive add method (untested)