Separate model specific logic into a separate module in preparation for #29.