kinda big commit, moved Functor instance to separate file, made vector compile, now need to change proof