         theta (* (Math/random) 2 Math/PI)]
     [(+ center-x (* r (Math/cos theta))) (+ center-y (* r (Math/sin theta)))]))
 
-(defn- gen-random-points [num-plots buffer & opts]
-  (let [{:keys [left bottom right top center-x center-y radius circle?]} opts
-        max-iterations (* 2 num-plots)]
+(defn- gen-random-points [num-plots spacing point-gen-fn]
+  (let [max-iterations (* 2 num-plots)]
     (loop [points     []
            iterations 0]
       (cond

                               center?
                               [[lon lat]]

                               (= "random" sample-distribution)
                               (create-random-sample-set circle? radius buffer samples-per-plot center-x center-y)

                               (= "gridded" sample-distribution)
                               (create-gridded-sample-set circle? radius buffer sample-resolution center-x center-y)

                               :else []))))
            plots)))

(defn- create-random-plots-in-bounds [left bottom right top plot-size num-plots]
  (->> (gen-random-points num-plots
                          (* 2.0 plot-size)
                          #(random-point-in-bounds left bottom right top))
       (map EPSG:3857->4326)))

(defn- create-random-sample-set [circle? center-x center-y radius spacing samples-per-plot]
  (let [[left bottom right top] (pad-bounds (- center-x radius)
                                            (- center-y radius)
                                            (+ center-x radius)
                                            (+ center-y radius)
                                            spacing)] ; Add buffer = spacing
    (->> (gen-random-points samples-per-plot
                            spacing
                            (if circle?
                              #(random-point-in-circle center-x center-y (- radius spacing)) ; Add buffer = spacing
                              #(random-point-in-bounds left bottom right top)))
         (map EPSG:3857->4326))))

(defn generate-point-samples [plots
                              plot-count
