diff --git a/EEConfig.cabal b/EEConfig.cabal
new file mode 100644
--- /dev/null
+++ b/EEConfig.cabal
@@ -0,0 +1,28 @@
+name:            EEConfig
+version:         1.0
+copyright:       (c) 2008 Bartosz Wójcik
+license:         BSD3
+license-file:    LICENSE
+author:          Bartosz Wojcik <bartek@sudety.it>
+maintainer:      Bartosz Wojcik <bartek@sudety.it>
+category:        Parsing
+synopsis:        ExtremlyEasyConfig - Extremly Simple parser for config files
+description:     Implementation of a very simple parser for parameters recognition.
+                  It recognizes given parameters and their values.
+                  As input it becomes list of parameters and all their possible values in format [ParameterInput]
+                  and input String where parameters will be searched for.
+                  As output it deliveres recognized parameters and their values in format [ParameterOutput],
+                  where only these parameters are present which have been found in the input string.
+                  In output list each exisitng parameter has exactly one value - this one that has
+                  been recognized in the input string.
+                  Parameters in the input string have to be always given in following format:
+                  (\<flagname> \<parameter>)*.
+                  Anything what is not recognized as parameter or value is ignored.
+stability:       stable
+build-type:      Simple
+cabal-version:   >= 1.2.1
+
+library
+  exposed-modules: EEConfig
+  build-depends:   base >= 3.0, containers
+
diff --git a/EEConfig.cabal~ b/EEConfig.cabal~
new file mode 100644
--- /dev/null
+++ b/EEConfig.cabal~
@@ -0,0 +1,28 @@
+name:            ExtremlyEasyConfig
+version:         1.0
+copyright:       (c) 2008 Bartosz Wójcik
+license:         BSD3
+license-file:    LICENSE
+author:          Bartosz Wojcik <bartek@sudety.it>
+maintainer:      Bartosz Wojcik <bartek@sudety.it>
+category:        Parsing
+synopsis:        Extremly Simple parser for config files
+description:     Implementation of a very simple parser for parameters recognition.
+                  It recognizes given parameters and their values.
+                  As input it becomes list of parameters and all their possible values in format [ParameterInput]
+                  and input String where parameters will be searched for.
+                  As output it deliveres recognized parameters and their values in format [ParameterOutput],
+                  where only these parameters are present which have been found in the input string.
+                  In output list each exisitng parameter has exactly one value - this one that has
+                  been recognized in the input string.
+                  Parameters in the input string have to be always given in following format:
+                  (\<flagname> \<parameter>)*.
+                  Anything what is not recognized as parameter or value is ignored.
+stability:       stable
+build-type:      Simple
+cabal-version:   >= 1.2.1
+
+library
+  exposed-modules: EEConfig
+  build-depends:   base >= 3.0, containers
+
diff --git a/EEConfig.hs b/EEConfig.hs
new file mode 100644
--- /dev/null
+++ b/EEConfig.hs
@@ -0,0 +1,118 @@
+-- ==================================
+-- Module name: EEConfig
+-- Copyright (C) 2008  Bartosz Wójcik
+-- Created on: 26.10.2008
+-- Last update: 29.10.2008
+-- License: BSD
+
+-- =========================================================
+-- |
+-- This module is a very simple parser for parameters recognition.
+-- It recognizes given parameters and their values.
+-- As input it becomes list of parameters and their values in format @[ParameterInput]@
+-- and input String where parameters will be searched.
+-- As output it deliveres recognized parameters and values in format @[ParameterOutput]@,
+-- where only these parameters are present which have been found in the input string.
+-- In output list each exisitng parameter has exactly one value - this one that has
+-- been recognized in the input string.
+-- Parameters in the input string have to be always given in following format:
+-- (\<flagname> \<parameter>)*
+--
+-- Example how to use it.
+--
+-- @
+-- let paramsList = matchParamsL params inputText
+-- let paramsTree = matchParamsT paramsList
+-- params :: [ParameterInput]
+-- params = [("-pl1",algNum),("-pl2",algNum),
+--          ("-br1","0":(map show [5..30])),("-br2","0":(map show [5..30])),
+--          ("-dp1","0":(map show [3..8])),("-dp2","0":(map show [3..8])),
+--          ("-verbose",["0","1","2"]),
+--          ("-evaluator",["only","all"])]
+-- @
+
+module EEConfig (ParameterInput,
+                  ParameterOutput,
+                  ParameterTree,
+                  matchParamsL,
+                  matchParamsT,
+                  member,
+                  (!)
+                  )
+where
+
+import qualified Data.Map as Map (Map,
+                                  (!),
+                                  member,
+                                  insert,
+                                  empty)
+
+-- =========================================================
+-- |
+-- ParameterInput is a pair of parameter label and all its valid values.
+type ParameterInput = (String,[String])
+
+-- |
+-- Parameter's label and its value formated for output.
+type ParameterOutput = (String,String)
+
+-- |
+-- Dictionary is a map of keywords which are parameter labels,
+-- and values that are maps of all possible values for given parameter.
+-- It is possible to rewrite Dictionary to Trie if anybody whishes.
+type Dictionary = Map.Map String (Map.Map String String)
+
+-- |
+-- Read parameters [ParameterOutput] formated can be transformed into
+-- binary tree for search purposes.
+type ParameterTree = Map.Map String String
+-- =========================================================
+
+-- =========================================================
+matchParamsL :: [ParameterInput]   -- ^ List of parameters' labels and their all possible values
+             -> String             -- ^ Input
+             -> [ParameterOutput]  -- ^ Output - list of matched parameters and values.
+matchParamsL params = matchAgainstDict (buildDict params) [] . words
+-- =========================================================
+
+-- =========================================================
+matchAgainstDict :: Dictionary -> [ParameterOutput] -> [String] -> [ParameterOutput]
+-- ---------------------------------------------------------
+matchAgainstDict _    os []     = os
+matchAgainstDict _    os (w:[]) = os
+matchAgainstDict dict os (w:val:ws)
+                 | w `Map.member` dict && val `Map.member` values = matchAgainstDict dict ((w,val):os) ws
+                 | otherwise                                      = matchAgainstDict dict os (val:ws)
+                 where values = dict Map.! w
+-- =========================================================
+
+-- =========================================================
+buildDict :: [ParameterInput] -> Dictionary
+-- ---------------------------------------------------------
+buildDict = foldl (\map (key,args) -> Map.insert key (insertValues args) map) Map.empty
+-- =========================================================
+
+-- =========================================================
+insertValues :: [String] -> Map.Map String String
+-- ---------------------------------------------------------
+insertValues = foldl (\map key -> Map.insert key [] map) Map.empty
+-- =========================================================
+
+-- =========================================================
+-- | Transfers list of regonized parameters into a tree.
+matchParamsT :: [ParameterOutput] -> ParameterTree
+-- ---------------------------------------------------------
+matchParamsT = foldl (\map (key,arg) -> Map.insert key arg map) Map.empty
+-- =========================================================
+
+-- =========================================================
+-- | Following functions are supposed to be parameters dictionary access functions.
+-- If this modul used another data structure these 2 functions would need to 
+-- be rewriten to get data from this new data structure.
+(!) dictionary key = dictionary Map.! key
+-- =========================================================
+-- | Following functions are supposed to be parameters dictionary access functions.
+member key dictionary = key `Map.member` dictionary
+-- =========================================================
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,15 @@
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer 
+      in the documentation and/or other materials provided with the distribution.
+    * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived 
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
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
