I don't think the code below requires that `y` be a `Vector{Float64}`, does it? Maybe we can just make this `AbstractVector`?