Updated to include toModel and reverse.