diff --git a/src/DerekoVecs.jl b/src/DerekoVecs.jl
index 795acc1..f2f2f54 100644
--- a/src/DerekoVecs.jl
+++ b/src/DerekoVecs.jl
@@ -1,5 +1,64 @@
 module DerekoVecs
+export load, knn, cos_sim, d2vmodel
 
-# Write your package code here.
+using Mmap
+using DelimitedFiles
+using LinearAlgebra
+using Distances
+using Pkg.Artifacts
+
+struct d2vmodel
+    M::Matrix{Float32}
+    m::Int64
+    n::Int64
+    vocabdict::Dict{String, Int64}
+    vocab::Array{String}
+end
+
+function load(modelfn) ::d2vmodel
+    (n, d) = map(s->parse(Int, s), split(readline(modelfn), " "))
+    vocabfn = replace(modelfn, ".vecs" => ".vocab")
+
+    vocab = readdlm(vocabfn, ' ', String, dims=(n,2), quotes = false)[:,1]
+    vocabdict = Dict{String, Int64}(zip(vocab, 1:n))
+    vecsfn = "$(modelfn).vecs"
+    M = Mmap.mmap(vecsfn, Matrix{Float32}, (d,n))
+    d2vmodel(M, d, n, vocabdict, vocab)
+end
+
+function load() ::d2vmodel
+    load(defaultmodelfn)
+end
+
+function cos_sim(m1::d2vmodel, m2::d2vmodel, w1::String, w2::String)
+    try
+        dot(m1.M[:, m1.vocabdict[w1]], m2.M[:, m2.vocabdict[w2]])
+        catch error
+            -1.0
+    end
+end
+
+cos_sim(m::d2vmodel, w1::String, w2::String) = cos_sim(m, m, w1,w2)
+
+function minus(m::d2vmodel, w1::String, w2::String)
+    knn(m, normalize(m.M[:,m.vocabdict[w1]] - m.M[:,m.vocabdict[w2]]), 1)[1]
+end
+
+function knn(m::d2vmodel, v::Array{Float32}, k)
+    # dist = Array{Float64}(undef, size(m.M)[2])
+    #@time Threads.@threads for i in 1:size(M)[2] dist[i]=dot(v, M[:,i]) end
+    #knn = sortperm(dist, rev=true)[1:k]
+    knn = sortperm(map(x->dot(v, m.M[:,x]), 1:m.n), rev=true)[1:k]
+    map(x->m.vocab[x], knn)
+end
+
+function knn(m::d2vmodel, w1index::Int64, k::Int)
+    knn(m, m.M[:,w1index], k)
+end
+
+function knn(m::d2vmodel, w1::String, k)
+    knn(m, m.vocabdict[w1], k)
+end
 
 end
+
