diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,16 @@
+Poetic License
+==============
+
+© 2014 Francesco Occhipinti
+
+This work ‘as-is’ I provide.
+No warranty express or implied.
+  For no purpose fit,
+  not even a wee bit.
+Liability for damages denied.
+
+Permission is granted hereby,
+to copy, share, and modify.
+  Use it with glee,
+  for profit or free.
+On this notice, these rights rely.
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/WebOutput.hs b/WebOutput.hs
new file mode 100644
--- /dev/null
+++ b/WebOutput.hs
@@ -0,0 +1,36 @@
+module WebOutput where
+
+import System.IO.Temp (openTempFile, createTempDirectory)
+import Web.Browser (openBrowser)
+import System.IO (hPutStr, hFlush)
+import System.Directory (getTemporaryDirectory)
+import System.FilePath.Posix (combine, FilePath)
+import qualified Data.Text as T
+import qualified Data.Text.IO as T
+
+toTheBrowser content = do
+  dir <- getTemporaryDirectory
+  path <- writeContentToTempFile dir content "output.html"
+  openBrowser path
+    where
+      writeContentToTempFile dir content fileName = do
+        (path, handle) <- openTempFile dir "output.html"
+        hPutStr handle content
+        hFlush handle
+        return path
+
+data Resource = Resource {
+  location :: FilePath,
+  content :: T.Text
+}
+
+writeResource (Resource loc con) = T.writeFile loc con
+
+manyToTheBrowser resources = do
+  dir <- getTemporaryDirectory
+  containing <- createTempDirectory dir "output"
+  mapM writeResource (combined containing)
+  (openBrowser . location . head) (combined containing)
+  where
+    combined dir = map (applyLocation (combine dir)) resources
+    applyLocation f (Resource a b) = Resource (f a) b
diff --git a/test.hs b/test.hs
new file mode 100644
--- /dev/null
+++ b/test.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE OverloadedStrings #-}
+import WebOutput
+
+s = ("script.js", "window.onload = alert('it works')")
+i = ("index.html", "<script src=\"script.js\"></script>")
+
+main = multiToTheBrowser [i, s]
diff --git a/web-output.cabal b/web-output.cabal
new file mode 100644
--- /dev/null
+++ b/web-output.cabal
@@ -0,0 +1,45 @@
+-- Initial web-output.cabal generated by cabal init.  For further 
+-- documentation, see http://haskell.org/cabal/users-guide/
+
+name:                web-output
+version:             0.3.0.0
+synopsis:            Library to present content to an user via their browser
+description:         Library to present content to an user via their browser
+homepage:            https://github.com/danse/web-output
+license:             PublicDomain
+license-file:        LICENSE
+author:              danse
+maintainer:          f.occhipinti@gmail.com
+-- copyright:           
+category:            Scripting
+build-type:          Simple
+-- extra-source-files:  
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     WebOutput
+  -- other-modules:       
+  -- other-extensions:    
+  build-depends:       base >=4.8 && <4.9,
+                       temporary,
+                       open-browser,
+                       directory,
+                       filepath,
+                       text
+  -- hs-source-dirs:      
+  default-language:    Haskell2010
+                       
+Test-Suite test
+           type: exitcode-stdio-1.0
+           main-is: test.hs
+           build-depends: base,
+                          temporary,
+                          open-browser,
+                          directory,
+                          filepath,
+                          text
+           default-language:    Haskell2010
+
+source-repository head
+                  type: git
+                  location: git@github.com:danse/web-output.git
