shouldn't recurse with the entire list, only the tail