diff --git a/Numeric/HFoil/Drawing.hs b/Numeric/HFoil/Drawing.hs
--- a/Numeric/HFoil/Drawing.hs
+++ b/Numeric/HFoil/Drawing.hs
@@ -8,6 +8,7 @@
                             , drawOnce
                             , drawNormals
                             , drawForces
+                            , drawKuttas
                             ) where
 
 import Graphics.Gloss hiding(Vector,dim)
@@ -73,6 +74,15 @@
   where
     x = realToFrac $ (x' - min')/(max'-min')
 
+drawKuttas :: (Real a, Storable a) => FlowSol a -> Picture
+drawKuttas flow = pictures $ concatMap (\(k0,k1) -> [circ k0, circ k1]) kis
+  where
+    kis = solKuttaIndices flow
+    (xs',ys') = unzip $ map fMidpoints $ (\(Foil els _) -> els) (solFoil flow)
+    xs = join xs'
+    ys = join ys'
+    circ k = drawCircle yellow (xs @> k, ys @> k) 0.006
+
 drawForces :: FlowSol Double -> Picture
 drawForces flow = pictures $ map (\(xy0, xy1, cp) -> drawLine (colorFun minCp maxCp cp) [xy0, xy1])
                   $ zip3 xy0s xy1s (toList (solCps flow))
@@ -108,14 +118,11 @@
     f _ _ = error "uh oh (groupSomethingByFoil)"
 
 drawSolution :: FlowSol Double -> Picture
-drawSolution flow = pictures $ [ drawText white (0.45, 0.8) 0.15 m0
-                               , drawText white (0.45, 0.65) 0.15 m1
-                               , drawText white (0.45, 0.5) 0.15 m2
-                               , drawText white (0.45, 0.35) 0.15 m3
-                               , drawForces flow
-                               , drawColoredFoil colors foil
+drawSolution flow = pictures $ onscreenText ++
+                               [ drawColoredFoil colors foil
                                , drawCircle white (fst $ solCenterPressure flow, snd $ solCenterPressure flow) 0.006
                                , drawCircle white (fst $ solCenterPressure flow, 0) 0.006
+                               , drawCircle green (0.25,0::Double) 0.006
                                ] ++ zipWith (\x y -> drawLineV red (x, y)) xs
                                     (takesV (map dim xs) (LA.scale cpScale cps)) -- cp graph
   where
@@ -124,15 +131,15 @@
     
     xs = map (fst . fMidpoints) elements
     
---                             ] ++ zipWith (\x y -> drawLine red (toList x, y)) xs (groupSomethingByFoil foil (toList (LA.scale cpScale cps))) -- cp graph
---                             ++
+    onscreenText = zipWith (\m y -> drawText white (0.45,y) 0.15 m) msgs
+                   $ take (length msgs) [0.8,0.65..]
+    msgs = [ name
+           , printf ("alpha: %.6f deg") ((solAlpha flow)*180/pi)
+           , printf ("Cl: %.6f") (solCl flow)
+           , printf ("Cd: %.6f") (solCd flow)
+           , printf ("Cm: %.6f (c/4, 0)") (solCm flow)
+           ]
 
-    [m0,m1,m2,m3] = [ name
-                    , printf ("alpha: %.6f") ((solAlpha flow)*180/pi)
-                    , printf ("Cl: %.6f") (solCl flow)
-                    , printf ("Cd: %.6f") (solCd flow)
-                    ]
-        
     colors = map (colorFun (minElement cps) (maxElement cps)) (toList cps)
 
 
diff --git a/Numeric/HFoil/Flow.hs b/Numeric/HFoil/Flow.hs
--- a/Numeric/HFoil/Flow.hs
+++ b/Numeric/HFoil/Flow.hs
@@ -19,9 +19,12 @@
                          , solVorticities :: [a]
                          , solAlpha :: a
                          , solForces :: (Vector a, Vector a)
+                         , solForce :: (a,a)
                          , solCl :: a
                          , solCd :: a
+                         , solCm :: a -- moment about (0,0.25)
                          , solCenterPressure :: (a,a)
+                         , solKuttaIndices :: [(Int,Int)]
                          }
 
 solveFlow :: (Num (Vector a), RealFloat a, Field a) => Foil a -> a -> FlowSol a
@@ -32,9 +35,12 @@
           , solVorticities = vorticities
           , solAlpha = alpha
           , solForces = (xForces, yForces)
+          , solForce = (xf,yf)
           , solCl = cl
           , solCd = cd
+          , solCm = cm
           , solCenterPressure = (xCp, yCp)
+          , solKuttaIndices = kuttaIndices
           }
   where
     -- surface velocities
@@ -56,14 +62,18 @@
         
     cd =  xf*(cos alpha) + yf*(sin alpha)
     cl = -xf*(sin alpha) + yf*(cos alpha)
-
+    
+    -- midpoints
+    (xs,ys) = (\(x,y) -> (join x, join y)) $ unzip $ map fMidpoints elements
+    
     -- centers of pressure
     (xCp, yCp) = ( (sumElements (xs*yForces)) / (sumElements yForces)
                  , (sumElements (ys*xForces)) / (sumElements xForces)
                  )
-      where
-        (xs,ys) = (\(x,y) -> (join x, join y)) $ unzip $ map fMidpoints elements
 
+    -- moment about cp and quarter chord
+    cm = sumElements $  (mapVector (\z -> z - 0.25) xs)*yForces - ys*xForces
+
     kuttaIndices = ki 0 (map dim angles')
       where
         ki _ [] = []
@@ -125,6 +135,18 @@
     getSubRow i (j0,jf) mat = flatten $ subMatrix (i,j0) (1,jf-j0+1) mat
 
 
+{- 
+calcuate 4 matrices which will be useful
+
+mSL(i,j) = sin(qi - ij) * ln(rij+1/rij)
+mCL(i,j) = cos(qi - ij) * ln(rij+1/rij)
+mSB(i,j) = sin(qi - ij) * beta(i,j)
+mCB(i,j) = cos(qi - ij) * beta(i,j)
+
+where for i==j: ln(r/r) = 0
+                beta    = pi
+are explicitly set
+-}
 setupGeometries :: (RealFloat t, Storable t) =>
                    Vector t
                    -> (Vector t, Vector t)
diff --git a/Numeric/HFoil/Repl.hs b/Numeric/HFoil/Repl.hs
--- a/Numeric/HFoil/Repl.hs
+++ b/Numeric/HFoil/Repl.hs
@@ -22,6 +22,17 @@
 xSize = 800
 ySize = 500
 
+data Config = Config { confForces :: Bool
+                     , confKuttas :: Bool
+                     , confNormals :: Bool
+                     }
+
+defaultConfig :: Config
+defaultConfig = Config { confForces = False
+                       , confKuttas = False
+                       , confNormals = False
+                       }
+
 run :: IO ()
 run = do
   let naca0 = "2412"
@@ -31,7 +42,8 @@
   
   putStrLn "Welcome to hfoil\n"
   
-  _ <- forkIO $ runInputT defaultSettings (topLoop (\pics -> swapMVar mpics pics >>= (\_ -> return ())))
+  _ <- forkIO $ runInputT defaultSettings
+       $ topLoop (\pics -> swapMVar mpics pics >>= (\_ -> return ())) defaultConfig
 
   animateIO
     (InWindow
@@ -41,52 +53,73 @@
     black                -- background color
     (\_ -> readMVar mpics >>= return . pictures) -- draw function
 
-foilLoop :: ([Picture] -> IO ()) -> Foil Double -> InputT IO ()
-foilLoop draw foil@(Foil _ name) = do
+foilLoop :: ([Picture] -> IO ()) -> Config -> Foil Double -> InputT IO ()
+foilLoop draw conf foil@(Foil _ name) = do
   minput <- getInputLine $ "\ESC[1;32m\STXhfoil."++name++">> \ESC[0m\STX"
   case minput of
     Nothing -> return ()
     Just "quit" -> do outputStrLn "gloss won't let you quit :(\ntry ctrl-c or hit ESC in drawing window"
-                      foilLoop draw foil
+                      foilLoop draw conf foil
     Just ('a':'l':'f':'a':' ':[]) -> do outputStrLn $ "unrecognized command"
-                                        foilLoop draw foil
+                                        foilLoop draw conf foil
     Just ('a':'l':'f':'a':' ':alphaDeg) -> do let flow = solveFlow foil (pi/180*(read alphaDeg))
-                                              liftIO $ draw $ [drawSolution flow]
-                                              foilLoop draw foil
+                                                  forces = case (confForces conf) of
+                                                    True -> [drawForces flow]
+                                                    False -> []
+                                                  kuttas = case (confKuttas conf) of
+                                                    True -> [drawKuttas flow]
+                                                    False -> []
+                                                  normals = case (confNormals conf) of
+                                                    True -> [drawNormals (solFoil flow)]
+                                                    False -> []
+                                              liftIO $ draw $ forces++kuttas++normals++[drawSolution flow]
+                                              foilLoop draw conf foil
+    Just ('f':'o':'r':'c':'e':'s':[]) -> do
+      let newConf = conf {confForces = not (confForces conf)}
+      outputStrLn $ "force drawing set to "++ show (not (confForces conf))
+      foilLoop draw newConf foil
+    Just ('k':'u':'t':'t':'a':'s':[]) -> do 
+      let newConf = conf {confKuttas = not (confKuttas conf)}
+      outputStrLn $ "kutta drawing set to "++ show (not (confKuttas conf))
+      foilLoop draw newConf foil
+    Just ('n':'o':'r':'m':'a':'l':'s':[]) -> do
+      let newConf = conf {confNormals = not (confNormals conf)}
+      outputStrLn $ "normals drawing set to "++ show (not (confNormals conf))
+      foilLoop draw newConf foil
     Just "" -> return ()
     Just input -> do outputStrLn $ "unrecognized command \"" ++ input ++ "\""
-                     foilLoop draw foil
+                     foilLoop draw conf foil
 
-topLoop :: ([Picture] -> IO ()) -> InputT IO ()
-topLoop draw = do
+topLoop :: ([Picture] -> IO ()) -> Config -> InputT IO ()
+topLoop draw conf = do
   minput <- getInputLine "\ESC[1;32m\STXhfoil>> \ESC[0m\STX"
   case minput of
     Nothing -> return ()
     Just "quit" -> do outputStrLn "gloss won't let you quit :(\ntry ctrl-c or hit ESC in drawing window"
-                      topLoop draw
-    Just ('n':'a':'c':'a':' ':spec) -> do parseNaca draw spec
-                                          topLoop draw
+                      topLoop draw conf
+    Just ('n':'a':'c':'a':' ':spec) -> do parseNaca draw conf spec
+                                          topLoop draw conf
     Just ('l':'o':'a':'d':' ':name) -> do
       foil <- liftIO (loadFoil name)
       case foil of Left errMsg -> outputStrLn errMsg
                    Right foil' -> do liftIO $ draw [drawFoil foil', drawNormals foil']
-                                     foilLoop draw foil'
-      topLoop draw
+                                     foilLoop draw conf foil'
+      topLoop draw conf
     Just ('u':'i':'u':'c':' ':name) -> do
       efoil <- liftIO (getUIUCFoil name)
       case efoil of Left errMsg -> outputStrLn errMsg
                     Right foil -> do liftIO $ draw [drawFoil foil, drawNormals foil]
-                                     foilLoop draw foil
-      topLoop draw
+                                     foilLoop draw conf foil
+      topLoop draw conf
 
-    Just "" -> topLoop draw
+    Just "" -> topLoop draw conf
     Just input -> do outputStrLn $ "unrecognized command \"" ++ input ++ "\""
-                     topLoop draw
+                     topLoop draw conf
 
-parseNaca :: ([Picture] -> IO ()) -> String -> InputT IO ()
-parseNaca draw str 
+parseNaca :: ([Picture] -> IO ()) -> Config -> String -> InputT IO ()
+parseNaca draw conf str 
   | length str == 4 = do let foil = panelizeNaca4 (naca4 str :: Naca4 Double) nPanels
                          liftIO $ draw [drawFoil foil, drawNormals foil]
-                         foilLoop draw foil
+                         foilLoop draw conf foil
   | otherwise = do outputStrLn $ "Not 4 digits"
                    return ()
diff --git a/hfoil.cabal b/hfoil.cabal
--- a/hfoil.cabal
+++ b/hfoil.cabal
@@ -1,5 +1,5 @@
 Name:                hfoil
-Version:             0.1.1
+Version:             0.1.2
 Stability:           Experimental
 Synopsis:            Hess-Smith panel code for inviscid 2-d airfoil analysis
 License:             BSD3
@@ -21,15 +21,13 @@
 .
 * Broken UIUC database integration (type \"uiuc [foilname]\")
 .
-* Shameless xfoil ripoff for the relp/plotting
+* Shameless xfoil ripoff for relp/plotting interface
 .
-* Only works with development version of Gloss that's not yet on Hackage
+* Only works with development version of Gloss that's not on Hackage yet
 .
 * Haskeline interface with tab-completion
 .
-* And nothing else.
 .
-.
 To get started, do cabal install or whatever, then run the \"hfoil\" binary.
 .
 Things to try: \"naca 2412\", \"alfa 4\", (hit enter before entering another airfoil), \"load [filename]\", \"uiuc e330\"
@@ -78,4 +76,4 @@
 source-repository head
   type:     git
   location: git://github.com/ghorn/hfoil.git
-  tag:      0.1.1
+  tag:      0.1.2
