Split into separate object files. Extract validations & defaults into public methods.