Majorly refactored models.