Works unless you case on the recursive call