core.py: support first/last name