added skeletal recursive implementation