preliminary complete models.py