             throw ScoreFunctionBuilderError.missingRequiredField("scale")
         }
 
-        super.init(type: .gauss, field: builder.field!, origin: builder.origin!, scale: builder.scale!, offset: builder.offset!, decay: builder.decay!, multiValueMode: builder.multiValueMode)
+        super.init(type: .gauss, field: builder.field!, origin: builder.origin!, scale: builder.scale!, offset: builder.offset, decay: builder.decay, multiValueMode: builder.multiValueMode)
     }
 
     public required init(from decoder: Decoder) throws {

        return lhs.type == rhs.type
            && lhs.field == rhs.field
            && lhs.origin == rhs.origin
            && lhs.scale == rhs.origin
            && lhs.offset == rhs.offset
            && lhs.decay == rhs.decay
            && lhs.multiValueMode == rhs.multiValueMode

            throw ScoreFunctionBuilderError.missingRequiredField("scale")
        }

        super.init(type: .exp, field: builder.field!, origin: builder.origin!, scale: builder.scale!, offset: builder.offset, decay: builder.decay, multiValueMode: builder.multiValueMode)
    }

    public required init(from decoder: Decoder) throws {
