diff --git a/learn-physics-examples.cabal b/learn-physics-examples.cabal
--- a/learn-physics-examples.cabal
+++ b/learn-physics-examples.cabal
@@ -1,5 +1,5 @@
 Name:                learn-physics-examples
-Version:             0.3.1
+Version:             0.5
 Stability:           Experimental
 Synopsis:            examples for learn-physics
 Description:         Executables that use the learn-physics library.
@@ -9,58 +9,61 @@
 Maintainer:          Scott N. Walck <walck@lvc.edu>
 Category:            Physics
 Build-type:          Simple
-Cabal-version:       >=1.6
-Tested-with:         GHC == 7.6.3
+Cabal-version:       >=1.8
+Tested-with:         GHC == 7.8.2
 
 Executable           learn-physics-PlaneWave
-  Main-is:           src/learn-physics-PlaneWave.hs
-  Build-depends:     not-gloss >= 0.5.0 && < 0.6,
-                     spatial-math >= 0.1.4 && < 0.2,
+  Main-is:           src/PlaneWave.hs
+  Build-depends:     not-gloss >= 0.6 && < 0.7,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
 Executable           learn-physics-eFieldLine3D
   Main-is:           src/eFieldLine3D.hs
-  Build-depends:     not-gloss >= 0.5.0 && < 0.6,
-                     spatial-math >= 0.1.4 && < 0.2,
+  Build-depends:     not-gloss >= 0.6 && < 0.7,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
 Executable           learn-physics-LorentzForceSimulation
   Main-is:           src/LorentzForceSimulation.hs
-  Build-depends:     not-gloss >= 0.5.0 && < 0.6,
-                     spatial-math >= 0.1.4 && < 0.2,
+  Build-depends:     not-gloss >= 0.6 && < 0.7,
+                     spatial-math >= 0.2 && < 0.3,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
 Executable           learn-physics-BCircularLoop
   Main-is:           src/BCircularLoop.hs
-  Build-depends:     not-gloss >= 0.5.0 && < 0.6,
-                     spatial-math >= 0.1.4 && < 0.2,
+  Build-depends:     not-gloss >= 0.6 && < 0.7,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
 Executable           learn-physics-sunEarth
   Main-is:           src/sunEarthRK4.hs
   Build-depends:     gloss >= 1.8 && < 1.9,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
 Executable           learn-physics-eFieldLine2D
   Main-is:           src/eFieldLine2D.hs
   Build-depends:     gloss >= 1.8 && < 1.9,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
-Executable           learn-physics-ElectricFluxPlot
-  Main-is:           src/ElectricFluxPlot.hs
+Executable           learn-physics-Projectile
+  Main-is:           src/Projectile.hs
   Build-depends:     gnuplot >= 0.5 && < 0.6,
                      base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+                     learn-physics >= 0.5 && < 0.6
 
-Executable           learn-physics-DampedOscillator
-  Main-is:           src/DampedOscillator.hs
-  Build-depends:     gnuplot >= 0.5 && < 0.6,
-                     base >= 4.5 && < 4.8,
-                     learn-physics >= 0.4.3
+-- Executable           learn-physics-ElectricFluxPlot
+--   Main-is:           src/ElectricFluxPlot.hs
+--   Build-depends:     gnuplot >= 0.5 && < 0.6,
+--                      base >= 4.5 && < 4.8,
+--                      learn-physics >= 0.5 && < 0.6
+
+-- Executable           learn-physics-DampedOscillator
+--   Main-is:           src/DampedOscillator.hs
+--   Build-depends:     gnuplot >= 0.5 && < 0.6,
+--                      base >= 4.5 && < 4.8,
+--                      learn-physics >= 0.5 && < 0.6
 
diff --git a/src/DampedOscillator.hs b/src/DampedOscillator.hs
--- a/src/DampedOscillator.hs
+++ b/src/DampedOscillator.hs
@@ -21,6 +21,7 @@
 plot2 = plotList [Title "Damped Harmonic Oscillator"
                  ,XLabel "Time (s)"
                  ,YLabel "Voltage (V)"
+                 ,Key Nothing
                  ] (map (\(t,x,_) -> (t,x)) $ take 1000 theStates)
 
 main :: IO ()
diff --git a/src/ElectricFluxPlot.hs b/src/ElectricFluxPlot.hs
--- a/src/ElectricFluxPlot.hs
+++ b/src/ElectricFluxPlot.hs
@@ -15,7 +15,9 @@
 plot1 :: IO ()
 plot1 = plotFunc [Title "Electric flux produced by a 1-nC point charge through a sphere with radius 2m"
                  ,YLabel "Electric flux (V m)"
-                 ,XLabel "Displacement of point charge from center of sphere (m)"]
+                 ,XLabel "Displacement of point charge from center of sphere (m)"
+                 ,Key Nothing
+                 ]
         [-3.05,-2.95..3] (\x -> electricFlux (sphere 2 (cart 0 0 0)) (PointCharge 1e-9 (cart x 0 0)))
 
 -- | Electric flux plot
diff --git a/src/LorentzForceSimulation.hs b/src/LorentzForceSimulation.hs
--- a/src/LorentzForceSimulation.hs
+++ b/src/LorentzForceSimulation.hs
@@ -10,7 +10,7 @@
 drawFunction (_t,r,_v)
     = RotEulerDeg (Euler 270 0 0) $ RotEulerDeg (Euler 0 180 0) $
       VisObjects [ Axes (0.5, 15)
-                 , Trans (xyzFromPos r) (Sphere 0.1 Solid red)
+                 , Trans (v3FromPos r) (Sphere 0.1 Solid red)
                  ]
 
 statePropagationFunction :: Float -> SimpleState -> SimpleState
diff --git a/src/PlaneWave.hs b/src/PlaneWave.hs
new file mode 100644
--- /dev/null
+++ b/src/PlaneWave.hs
@@ -0,0 +1,43 @@
+{-# OPTIONS_GHC -Wall #-}
+
+module Main where
+
+import Vis
+    ( animate
+    , VisObject(..)
+    , red
+    , blue
+    )
+import Physics.Learn.CarrotVec
+    ( vec
+    )
+import Physics.Learn
+    ( Position
+    , VectorField
+    , displayVectorField
+    , cart
+    , cartesianCoordinates
+    )
+
+samplePoints :: [Position]
+samplePoints = [cart x y z | x <- [-2,0,2], y <- [-2,0,2], z <- [-4,-3.6..4]]
+
+drawFun :: Float -> VisObject Double
+drawFun time = VisObjects [displayVectorField blue 1 samplePoints (eField t)
+                          ,displayVectorField red  1 samplePoints (bField t)
+                          ]
+    where
+      t = realToFrac time
+
+eField :: Double -> VectorField
+eField t r = vec (cos (z - t)) 0 0
+    where
+      (_,_,z) = cartesianCoordinates r
+
+bField :: Double -> VectorField
+bField t r = vec 0 (cos (z - t)) 0
+    where
+      (_,_,z) = cartesianCoordinates r
+
+main :: IO ()
+main = animate Nothing "Plane Wave" drawFun
diff --git a/src/learn-physics-PlaneWave.hs b/src/learn-physics-PlaneWave.hs
deleted file mode 100644
--- a/src/learn-physics-PlaneWave.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-
-module Main where
-
-import SpatialMath
-    ( Xyz(..)
-    )
-import Vis
-    ( animate
-    , VisObject(..)
-    , Color
-    , red
-    , blue
-    )
-import Physics.Learn.CarrotVec
-    ( Vec
-    , xComp
-    , yComp
-    , zComp
-    , vec
-    , magnitude
-    , (<.>)
-    )
-
-pointList :: [Double]
-pointList = [-2,0,2]
-
--- samplePoints :: [Vec]
--- samplePoints = [vec x y z | x <- [0], y <- [0], z <- [-4,-3.6..4]]
-
-samplePoints :: [Vec]
-samplePoints = [vec x y z | x <- [-2,0,2], y <- [-2,0,2], z <- [-4,-3.6..4]]
-
-xyzFromVec :: Vec -> Xyz Double
-xyzFromVec v = Xyz x y z
-    where
-      x = xComp v
-      y = yComp v
-      z = zComp v
-
-thinArrow :: Double -> (Xyz Double) -> Color -> VisObject Double
-thinArrow l = Arrow (l,10*l)
-
-metersPerVPM :: Double
-metersPerVPM = 1
-
-eArrows :: Double -> [VisObject Double]
-eArrows t = [Trans (xyzFromVec r) $ thinArrow (metersPerVPM * magnitude e) (xyzFromVec e) blue | (r,e) <- eFields t]
-
-eFields :: Double -> [(Vec,Vec)]
-eFields t = [(r,eField r t) | r <- samplePoints]
-
-bArrows :: Double -> [VisObject Double]
-bArrows t = [Trans (xyzFromVec r) $ thinArrow (metersPerVPM * magnitude b) (xyzFromVec b) red  | (r,b) <- bFields t]
-
-bFields :: Double -> [(Vec,Vec)]
-bFields t = [(r,bField r t) | r <- samplePoints]
-
-drawFun :: Float -> VisObject Double
-drawFun time = VisObjects $ eArrows t ++ bArrows t
-    where
-      t = realToFrac time
-
-c :: Double
-c = 1
-
-k :: Vec
-k = vec 0 0 1
-
-e0 :: Double
-e0 = 1
-
-eField :: Vec -> Double -> Vec
-eField r t = vec (e0 * cos (k <.> r - c * magnitude k * t)) 0 0
-
-bField :: Vec -> Double -> Vec
-bField r t = vec 0 (e0 / c * cos (k <.> r - c * magnitude k * t)) 0
-
-main :: IO ()
-main = animate Nothing "Plane Wave" drawFun
