Separating DTOs from factories and making input separate from factories