diff --git a/IHaskell/Display/Parsec.hs b/IHaskell/Display/Parsec.hs
new file mode 100644
--- /dev/null
+++ b/IHaskell/Display/Parsec.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE NoImplicitPrelude, TypeSynonymInstances, QuasiQuotes, FlexibleInstances, OverloadedStrings #-}
+module IHaskell.Display.Parsec () where
+
+import ClassyPrelude hiding (fromList)
+import System.Random
+import Data.String.Here
+import Data.HashMap.Strict as Map
+
+import Text.Parsec (parse, sourceLine, sourceColumn)
+--import Text.Parsec.Prim (Parser)
+import Text.Parsec.String (Parser)
+import Text.Parsec.Error (errorPos, ParseError)
+
+import Data.Aeson
+
+import IHaskell.Display
+
+instance Show a => IHaskellDisplay (Parser a) where
+  display renderable = return $ many [Display [javascript js], Display [html dom]]
+    where 
+      dom = [hereFile|widget.html|]
+      js = [hereFile|widget.js|]
+
+-- | Text to parse.
+data ParseText = ParseText String
+
+instance FromJSON ParseText where
+  parseJSON (Object v) = ParseText <$> v .: "text"
+  parseJSON _          = fail "Expecting object"
+
+-- | Output of parsing.
+instance Show a => ToJSON (Either ParseError a) where
+  toJSON (Left err) = object [
+                        "status" .= ("error" :: String),
+                        "line" .= sourceLine (errorPos err),
+                        "col" .= sourceColumn (errorPos err),
+                        "msg" .= show err
+                      ]
+  toJSON (Right result) = object [
+                               "status" .= ("success" :: String),
+                               "result" .= show result
+                            ]
+
+instance Show a => IHaskellWidget (Parser a) where
+  -- Name for this widget.
+  targetName _ = "parsec"
+
+  -- When we rece
+  comm widget (Object dict) publisher = do
+    let key = "text" :: Text
+        Just (String text) = Map.lookup key dict
+        result = parse widget "<interactive>" $ unpack text
+    publisher $ toJSON result
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Andrew Gibiansky
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/ihaskell-parsec.cabal b/ihaskell-parsec.cabal
new file mode 100644
--- /dev/null
+++ b/ihaskell-parsec.cabal
@@ -0,0 +1,73 @@
+-- The name of the package.
+name:                ihaskell-parsec
+
+-- The package version.  See the Haskell package versioning policy (PVP) 
+-- for standards guiding when and how versions should be incremented.
+-- http://www.haskell.org/haskellwiki/Package_versioning_policy
+-- PVP summary:      +-+------- breaking API changes
+--                   | | +----- non-breaking API additions
+--                   | | | +--- code changes with no API change
+version:             0.2.0.0
+
+-- A short (one-line) description of the package.
+synopsis:            IHaskell display instances for Parsec
+
+-- A longer description of the package.
+-- description:         
+
+-- URL for the project homepage or repository.
+homepage:            http://www.github.com/gibiansky/ihaskell
+
+-- The license under which the package is released.
+license:             MIT
+
+-- The file containing the license text.
+license-file:        LICENSE
+
+-- The package author(s).
+author:              Andrew Gibiansky
+
+-- An email address to which users can send suggestions, bug reports, and 
+-- patches.
+maintainer:          andrew.gibiansky@gmail.com
+
+-- A copyright notice.
+-- copyright:           
+
+category:            Development
+
+build-type:          Simple
+
+-- Extra files to be distributed with the package, such as examples or a 
+-- README.
+-- extra-source-files:  
+
+-- Constraint on the version of Cabal needed to build this package.
+cabal-version:       >=1.16
+
+library
+  -- Modules exported by the library.
+  exposed-modules:     IHaskell.Display.Parsec
+  
+  -- Modules included in this library but not exported.
+  -- other-modules:       
+  
+  -- Language extensions.
+  default-extensions: DoAndIfThenElse
+              OverloadedStrings
+             
+  -- Other library packages from which modules are imported.
+  build-depends:       base ==4.6.* || ==4.7.*,
+                       aeson >=0.7 && <0.9,
+                       unordered-containers,
+                       classy-prelude,
+                       random >= 1,
+                       parsec,
+                       here,
+                       ihaskell >= 0.5
+  
+  -- Directories containing source files.
+  -- hs-source-dirs:      
+  
+  -- Base language which the package is written in.
+  default-language:    Haskell2010
