diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,25 @@
+Copyright © 2009 Wolfgang Jeltsch
+All rights reserved.
+
+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 copyright holders nor the names of the 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 HOLDERS 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.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,4 @@
+#!/usr/bin/env runghc
+
+> import Distribution.Simple
+> main = defaultMain
diff --git a/algebra.cabal b/algebra.cabal
new file mode 100644
--- /dev/null
+++ b/algebra.cabal
@@ -0,0 +1,23 @@
+Name:          algebra
+Version:       0.0.0.0
+Cabal-Version: >= 1.2
+Build-Type:    Simple
+License:       BSD3
+License-File:  LICENSE
+Copyright:     © 2009 Wolfgang Jeltsch
+Author:        Wolfgang Jeltsch
+Maintainer:    jeltsch@informatik.tu-cottbus.de
+Stability:     provisional
+Homepage:      http://softbase.org/algebra/
+Package-URL:   http://hackage.haskell.org/packages/archive/algebra/0.0.0.0/algebra-0.0.0.0.tar.gz
+Synopsis:      Algebraic structures
+Description:   This package provides common algebraic structures in the form of type classes. In the
+               future, there might be other things than type classes in this package. Currently,
+               there is only the class of semigroups.
+Category:      Data
+Tested-With:   GHC == 6.10.1
+
+Library
+    Build-Depends:   base       >= 3.0 && < 4.1
+    Exposed-Modules: Data.Semigroup
+    HS-Source-Dirs:  src
diff --git a/src/Data/Semigroup.hs b/src/Data/Semigroup.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Semigroup.hs
@@ -0,0 +1,16 @@
+{-|
+    This module provides the class of semigroups.
+
+    A semigroup has a single binary operation which is associative.
+-}
+module Data.Semigroup (
+
+    Semigroup (append)
+
+) where
+
+    -- |The class of semigroups.
+    class Semigroup semigroup where
+
+        -- |An associative operation.
+        append :: semigroup -> semigroup -> semigroup
