I think the functions called from the validate/{1,2,3} should be called validate_lists/2, validate_list/3, and validate_list_entry/4 to differentiate their purposes.