Implicitly Unwrapped Optionals should be used as a last resort i . e . when something can ' t be instantiated in init i . e . IBOutlets in VCs must be optionals because binding happens after VC initialization . If you have some fields in your model which might not be available in all cases , then make them regular Optionals . If model is invalid without some fields , make them regular properties and fail early by using failable initialiser . Moreover , IMHO , model should be very stupid just a container for properties . All kind of formatting should be done by some specialised class . Same with downloading data from API any other source model shouldn ' t be responsible for getting its data from some source , the source should return model and it ' s shouldn be none of models business to know anything about its source . Also , nowhere in my and my colleagues code I have ever seen using private properties with as a prefix , but maybe it ' s just our coding style .