diff --git a/html/logo-64x64.png b/html/logo-64x64.png
deleted file mode 100644
Binary files a/html/logo-64x64.png and /dev/null differ
diff --git a/html/logo-64x64.svg b/html/logo-64x64.svg
new file mode 100644
--- /dev/null
+++ b/html/logo-64x64.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   viewBox="0 0 48.000001 47.999999"
+   version="1.1"
+   id="svg18"
+   sodipodi:docname="haskell_logo.svg"
+   inkscape:version="0.92.3 (unknown)">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2495"
+     inkscape:window-height="1416"
+     id="namedview20"
+     showgrid="false"
+     units="px"
+     inkscape:zoom="4.9870803"
+     inkscape:cx="87.017073"
+     inkscape:cy="4.4960944"
+     inkscape:window-x="65"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg18" />
+  <defs
+     id="defs5">
+    <clipPath
+       id="clip1">
+      <path
+         d="M 0,340.15625 H 481.89062 V 0 H 0 Z m 0,0"
+         id="path2"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+  </defs>
+  <g
+     id="surface0"
+     transform="matrix(0.09960767,0,0,0.09960767,-0.1503886,5.8491832)">
+    <g
+       clip-path="url(#clip1)"
+       id="g15"
+       style="clip-rule:nonzero">
+      <path
+         style="fill:#453b61;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="M 0,340.15625 113.38672,170.07812 0,0 H 85.039062 L 198.42578,170.07812 85.039062,340.15625 Z m 0,0"
+         id="path7"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#5f5286;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="M 113.38672,340.15625 226.77344,170.07812 113.38672,0 h 85.03906 L 425.19531,340.15625 H 340.15625 L 269.29297,233.85937 198.42578,340.15625 Z m 0,0"
+         id="path9"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#8e508a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 387.40234,240.94531 -37.79297,-56.6914 132.28125,-0.004 v 56.69531 z m 0,0"
+         id="path11"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#8e508a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 330.71094,155.90625 -37.79688,-56.691406 188.97656,-0.0039 v 56.695316 z m 0,0"
+         id="path13"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/ihaskell.cabal b/ihaskell.cabal
--- a/ihaskell.cabal
+++ b/ihaskell.cabal
@@ -7,7 +7,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.9.0.3
+version:             0.9.1.0
 
 -- A short (one-line) description of the package.
 synopsis:            A Haskell backend kernel for the IPython project.
@@ -44,7 +44,7 @@
 
 data-files: 
     html/kernel.js
-    html/logo-64x64.png
+    html/logo-64x64.svg
 
 flag binPkgDb
   default:             False
@@ -87,7 +87,7 @@
                        utf8-string          -any,
                        uuid                 >=1.3,
                        vector               -any,
-                       ipython-kernel       >=0.8.4
+                       ipython-kernel       >=0.9.1
   if flag(binPkgDb)
     build-depends:       bin-package-db
 
diff --git a/main/Main.hs b/main/Main.hs
--- a/main/Main.hs
+++ b/main/Main.hs
@@ -255,7 +255,13 @@
 -- Reply to kernel info requests with a kernel info reply. No computation needs to be done, as a
 -- kernel info reply is a static object (all info is hard coded into the representation of that
 -- message type).
-replyTo _ KernelInfoRequest{} replyHeader state =
+replyTo interface KernelInfoRequest{} replyHeader state = do
+  let send msg = liftIO $ writeChan (iopubChannel interface) msg
+
+  -- Notify the frontend that the Kernel is idle 
+  idleHeader <- liftIO $ dupHeader replyHeader StatusMessage
+  send $ PublishStatus idleHeader Idle
+
   return
     (state, KernelInfoReply
               { header = replyHeader
@@ -268,7 +274,9 @@
                 , languageVersion = VERSION_ghc
                 , languageFileExtension = ".hs"
                 , languageCodeMirrorMode = "ihaskell"
+                , languagePygmentsLexer = "Haskell"
                 }
+              , status = Ok
               })
 
 replyTo _ CommInfoRequest{} replyHeader state =
diff --git a/src/IHaskell/Display.hs b/src/IHaskell/Display.hs
--- a/src/IHaskell/Display.hs
+++ b/src/IHaskell/Display.hs
@@ -25,11 +25,18 @@
     -- * Constructors for displays
     plain,
     html,
+    bmp,
     png,
     jpg,
+    gif,
     svg,
     latex,
+    markdown,
     javascript,
+    json,
+    vega,
+    vegalite,
+    vdom,
     many,
 
     -- ** Image and data encoding functions
@@ -118,6 +125,38 @@
 -- | Generate a Javascript display.
 javascript :: String -> DisplayData
 javascript = DisplayData MimeJavascript . T.pack
+
+-- | Generate a Json display.
+json :: String -> DisplayData
+json = DisplayData MimeJson . T.pack
+
+-- | Generate a Vega display.
+vega :: String -> DisplayData
+vega = DisplayData MimeVega . T.pack
+
+-- | Generate a Vegalite display.
+vegalite :: String -> DisplayData
+vegalite = DisplayData MimeVegalite . T.pack
+
+-- | Generate a Vdom display.
+vdom :: String -> DisplayData
+vdom = DisplayData MimeVdom . T.pack
+
+-- | Generate a Markdown display.
+markdown :: String -> DisplayData
+markdown = DisplayData MimeMarkdown . T.pack
+
+-- | Generate a GIF display of the given width and height. Data must be provided in a Base64 encoded
+-- manner, suitable for embedding into HTML. The @base64@ function may be used to encode data into
+-- this format.
+gif :: Width -> Height -> Base64 -> DisplayData
+gif width height = DisplayData (MimeGif width height)
+
+-- | Generate a BMP display of the given width and height. Data must be provided in a Base64 encoded
+-- manner, suitable for embedding into HTML. The @base64@ function may be used to encode data into
+-- this format.
+bmp :: Width -> Height -> Base64 -> DisplayData
+bmp width height = DisplayData (MimeBmp width height)
 
 -- | Generate a PNG display of the given width and height. Data must be provided in a Base64 encoded
 -- manner, suitable for embedding into HTML. The @base64@ function may be used to encode data into
diff --git a/src/IHaskell/Eval/Parser.hs b/src/IHaskell/Eval/Parser.hs
--- a/src/IHaskell/Eval/Parser.hs
+++ b/src/IHaskell/Eval/Parser.hs
@@ -22,6 +22,7 @@
 import qualified Data.ByteString.Lazy as LBS
 import qualified Data.ByteString.Char8 as CBS
 
+import           Data.Char (toLower)
 import           Data.List (maximumBy, inits)
 import           Prelude (head, tail)
 import           Control.Monad (msum)
@@ -246,7 +247,9 @@
   in case pragmas of
     --empty string pragmas are unsupported
     [] -> Pragma (PragmaUnsupported "") []
-    "LANGUAGE":xs -> Pragma PragmaLanguage xs
+    x:xs
+      | map toLower x == "language"
+      -> Pragma PragmaLanguage xs
     x:xs -> Pragma (PragmaUnsupported x) xs
 
 -- | Parse a directive of the form :directiveName.
diff --git a/src/IHaskell/Eval/Widgets.hs b/src/IHaskell/Eval/Widgets.hs
--- a/src/IHaskell/Eval/Widgets.hs
+++ b/src/IHaskell/Eval/Widgets.hs
@@ -145,7 +145,7 @@
 
     DispMsg widget disp -> do
       dispHeader <- dupHeader replyHeader DisplayDataMessage
-      let dmsg = WidgetDisplay dispHeader "haskell" $ unwrap disp
+      let dmsg = WidgetDisplay dispHeader $ unwrap disp
       sendMessage widget (toJSON $ CustomContent $ toJSON dmsg)
 
     ClrOutput widget wait -> do
@@ -170,11 +170,11 @@
     unwrap (Display ddatas) = ddatas
 
 -- Override toJSON for PublishDisplayData for sending Display messages through [method .= custom]
-data WidgetDisplay = WidgetDisplay MessageHeader String [DisplayData]
+data WidgetDisplay = WidgetDisplay MessageHeader [DisplayData]
 
 instance ToJSON WidgetDisplay where
-  toJSON (WidgetDisplay replyHeader source ddata) =
-    let pbval = toJSON $ PublishDisplayData replyHeader source ddata
+  toJSON (WidgetDisplay replyHeader ddata) =
+    let pbval = toJSON $ PublishDisplayData replyHeader ddata
     in toJSON $ IPythonMessage replyHeader pbval DisplayDataMessage
 
 -- Override toJSON for ClearOutput
diff --git a/src/IHaskell/IPython.hs b/src/IHaskell/IPython.hs
--- a/src/IHaskell/IPython.hs
+++ b/src/IHaskell/IPython.hs
@@ -213,7 +213,7 @@
 
     SH.mkdir_p kernelDir
     SH.writefile filename $ LT.toStrict $ toLazyText $ encodeToTextBuilder $ toJSON kernelSpec
-    let files = ["kernel.js", "logo-64x64.png"]
+    let files = ["kernel.js", "logo-64x64.svg"]
     forM_ files $ \file -> do
       src <- liftIO $ Paths.getDataFileName $ "html/" ++ file
       SH.cp (SH.fromText $ T.pack src) (tmp SH.</> kernelName SH.</> file)
diff --git a/src/IHaskell/Publish.hs b/src/IHaskell/Publish.hs
--- a/src/IHaskell/Publish.hs
+++ b/src/IHaskell/Publish.hs
@@ -63,7 +63,7 @@
     sendOutput (ManyDisplay manyOuts) = mapM_ sendOutput manyOuts
     sendOutput (Display outs) = do
       header <- dupHeader replyHeader DisplayDataMessage
-      send $ PublishDisplayData header "haskell" $ map (convertSvgToHtml . prependCss) outs
+      send $ PublishDisplayData header $ map (convertSvgToHtml . prependCss) outs
 
     convertSvgToHtml (DisplayData MimeSvg svg) = html $ makeSvgImg $ base64 $ E.encodeUtf8 svg
     convertSvgToHtml x = x
diff --git a/src/tests/IHaskell/Test/Parser.hs b/src/tests/IHaskell/Test/Parser.hs
--- a/src/tests/IHaskell/Test/Parser.hs
+++ b/src/tests/IHaskell/Test/Parser.hs
@@ -12,7 +12,7 @@
 
 import           IHaskell.Test.Util (ghc, strip)
 import           IHaskell.Eval.Parser (parseString, getModuleName, unloc, layoutChunks, Located(..),
-                                       CodeBlock(..), DirectiveType(..), StringLoc(..))
+                                       CodeBlock(..), DirectiveType(..), StringLoc(..), PragmaType(..))
 import           IHaskell.Eval.ParseShell (parseShell)
 
 #if !MIN_VERSION_base(4,8,0)
@@ -196,6 +196,9 @@
     parses "let x = 3 in" `like` [ ParseError (Loc 1 13)
                                      "parse error (possibly incorrect indentation or mismatched brackets)"
                                  ]
+
+  it "parses LANGUAGE pragmas case-insensitively" $
+    parses "{-# LaNgUaGe OverloadedStrings #-}" `like` [Pragma PragmaLanguage ["OverloadedStrings"]]
 
   it "breaks without data kinds" $
     parses "data X = 3" `like` [dataKindsError]
