   TODO: remove redundancy, keep readability"
   [y & x]
   (let [foc (apply first-order-conditions y x)]
-    [(element-sum (map outer-product (transpose foc)))
-     (element-sum (map outer-product (transpose (map i/cumulative-sum foc))))]))
+    [(element-sum (map i/kronecker (transpose foc)))
+     (element-sum (map i/kronecker (transpose (map i/cumulative-sum foc))))]))
 
 (defn hansen-stat
   "returns the Hansen (1992) test statistic; number of first-order

  [coll]
  (apply (partial map vector) coll))

(defn outer-product
  "returns a flattened vector of the outer product of a vector and its
  transpose"
  [coll]
  (let [mat (i/matrix coll)]
    (flatten (i/mmult mat (i/trans mat)))))

(defn element-sum
  "returns a vector of sums of each respective element in a vector of vectors,
  i.e., a vector with the first element being the sum of the first

                    (scaled-vector scalar (idx coll))))))

(defn k-harmonic-matrix
  "returns an N x (2*k) matrix of harmonic series, where N is the
  length of `coll` and `k` is the number of harmonic terms."
  [freq k coll]
  (let [degree-vector (vec (map inc (range k)))]
    (apply i/bind-columns
