```python

def oxford_join(names: list) -> str:
    if not names:
        return ""
    
    if len(names) == 1:
        return names[0]
    
    result = "" + names[0]
    for name in names[1:-1]:
        result += " and " + name
    result += ", and " + names[-1]
    
    return result
```