diff --git a/CoreErlang.cabal b/CoreErlang.cabal
--- a/CoreErlang.cabal
+++ b/CoreErlang.cabal
@@ -1,13 +1,12 @@
 name: CoreErlang
-version: 0.0.1
+version: 0.0.2
 copyright: 2008, David Castro Pérez, Henrique Ferreiro García
 license: BSD3
 license-file: LICENSE
 author:	David Castro Pérez <dcastrop@udc.es>
         Henrique Ferreiro García <hferreiro@udc.es>
-maintainer:	Henrique Ferreiro García <hferreiro@udc.es>
-            David Castro Pérez <dcastrop@udc.es>
-homepage: .
+maintainer:	Alex Kropivny <alex.kropivny@gmail.com>
+homepage: http://github.com/amtal/CoreErlang
 stability: Experimental
 category: Language
 synopsis: Manipulating Core Erlang source code
@@ -28,6 +27,6 @@
         Language.CoreErlang.Pretty,
         Language.CoreErlang.Syntax
   if flag(split-base)
-    build-depends:	base >= 3, parsec == 2.1.0.0, pretty
+    build-depends:	base >= 3 && < 5, parsec >= 2.1.0.0, pretty
   else
-    build-depends:	base < 3, parsec == 2.1.0.0
+    build-depends:	base < 3, parsec >= 2.1.0.0
diff --git a/Language/CoreErlang/Parser.hs b/Language/CoreErlang/Parser.hs
--- a/Language/CoreErlang/Parser.hs
+++ b/Language/CoreErlang/Parser.hs
@@ -5,8 +5,7 @@
 --                (c) David Castro Pérez 2008
 -- License     :  BSD-style (see the file LICENSE)
 --
--- Maintainer  :  Henrique Ferreiro García <hferreiro@udc.es>
---                David Castro Pérez <dcastrop@udc.es>
+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com>
 -- Stability   :  experimental
 -- Portability :  portable
 --
@@ -166,7 +165,7 @@
               return $ Function (a,i)
 
 literal :: Parser Literal
-literal = liftM LInt integer <|> liftM LFloat float <|>
+literal = try (liftM LFloat float) <|> liftM LInt integer <|>
           liftM LAtom atom <|> nil <|> echar <|> estring
 
 nil :: Parser Literal
diff --git a/Language/CoreErlang/Pretty.hs b/Language/CoreErlang/Pretty.hs
--- a/Language/CoreErlang/Pretty.hs
+++ b/Language/CoreErlang/Pretty.hs
@@ -5,8 +5,7 @@
 --                (c) David Castro Pérez 2008
 -- License     :  BSD-style (see the file LICENSE)
 --
--- Maintainer  :  Henrique Ferreiro García
---                David Castro Pérez
+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com>
 -- Stability   :  experimental
 -- Portability :  portable
 --
diff --git a/Language/CoreErlang/Syntax.hs b/Language/CoreErlang/Syntax.hs
--- a/Language/CoreErlang/Syntax.hs
+++ b/Language/CoreErlang/Syntax.hs
@@ -5,8 +5,7 @@
 --                (c) David Castro Pérez 2008
 -- License     :  BSD-style (see the file LICENSE)
 --
--- Maintainer  :  Henrique Ferreiro García <hferreiro@udc.es>
---                David Castro Pérez <dcastrop@udc.es>
+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com>
 -- Stability   :  experimental
 -- Portability :  portable
 --
@@ -14,6 +13,7 @@
 -- <http://www.it.uu.se/research/group/hipe/cerl/>
 
 -----------------------------------------------------------------------------
+{-# LANGUAGE DeriveDataTypeable #-}
 
 module Language.CoreErlang.Syntax (
     -- * Modules
@@ -33,33 +33,35 @@
     Ann(..),
   ) where
 
+import Data.Data
+
 -- | This type is used to represent variables
 type Var = String
 
 -- | This type is used to represent atoms
 data Atom = Atom String
- deriving (Eq,Ord,Show)
+ deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | This type is used to represent function names
 data Function = Function (Atom,Integer)
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | A CoreErlang source module.
 data Module
         = Module Atom [Function] [(Atom,Const)] [FunDef]
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | This type is used to represent constants
 data Const
         = CLit Literal
         | CTuple [Const]
         | CList (List Const)
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | This type is used to represent lambdas
 data FunDef
         = FunDef (Ann Function) (Ann Exp)
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | /literal/.
 -- Values of this type hold the abstract value of the literal, not the
@@ -72,13 +74,13 @@
         | LFloat   Double   -- ^ floating point literal
         | LAtom   Atom      -- ^ atom literal
         | LNil              -- ^ empty list
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | CoreErlang expressions.
 data Exps
         = Exp (Ann Exp)        -- ^ single expression
         | Exps (Ann [Ann Exp]) -- ^ list of expressions
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | CoreErlang expression.
 data Exp
@@ -99,28 +101,28 @@
         | Try Exps ([Var],Exps) ([Var],Exps) -- ^ try expression
         | Rec [Ann Alt] TimeOut      -- ^ receive expression
         | Catch Exps                 -- ^ catch expression
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | A bitstring.
 data BitString a
         = BitString a [Exps]
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | A list of expressions
 data List a
         = L [a]
         | LL [a] a
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | An /alt/ in a @case@ expression
 data Alt
         = Alt Pats Guard Exps
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 data Pats
         = Pat Pat    -- ^ single pattern
         | Pats [Pat] -- ^ list of patterns
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | A pattern, to be matched against a value.
 data Pat
@@ -130,26 +132,26 @@
         | PList (List Pat)         -- ^ list pattern
         | PBinary [BitString Pat]  -- ^ list of bitstring patterns
         | PAlias Alias             -- ^ alias pattern
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | An alias, used in patterns
 data Alias
         = Alias Var Pat
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | A guarded alternative @when@ /exp/ @->@ /exp/.
 -- The first expression will be Boolean-valued.
 data Guard
         = Guard Exps
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | The timeout of a receive expression
 data TimeOut
         = TimeOut Exps Exps
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
 
 -- | An annotation for modules, variables, ...
 data Ann a
         = Constr a      -- ^ core erlang construct
         | Ann a [Const] -- ^ core erlang annotated construct
-  deriving (Eq,Ord,Show)
+  deriving (Eq,Ord,Show,Data,Typeable)
diff --git a/hcar/hcar.sty b/hcar/hcar.sty
deleted file mode 100644
--- a/hcar/hcar.sty
+++ /dev/null
@@ -1,183 +0,0 @@
-\ProvidesPackage{hcar}
-
-\newif\ifhcarfinal
-\hcarfinalfalse
-\DeclareOption{final}{\hcarfinaltrue}
-\ProcessOptions
-
-\RequirePackage{keyval}
-\RequirePackage{color}
-\RequirePackage{array}
-
-\ifhcarfinal
-  \RequirePackage[T1]{fontenc}
-  \RequirePackage{lmodern}
-  \RequirePackage{tabularx}
-  \RequirePackage{booktabs}
-  \RequirePackage{framed}
-  \RequirePackage[obeyspaces,T1]{url}
-  \RequirePackage
-    [bookmarks=true,colorlinks=true,
-     urlcolor=urlcolor,
-     linkcolor=linkcolor,
-     breaklinks=true,
-     pdftitle={Haskell Communities and Activities Report}]%
-    {hyperref}
-\else
-  \RequirePackage[obeyspaces]{url}
-\fi
-\urlstyle{sf}
-
-\definecolor{urlcolor}{rgb}{0.1,0.3,0}
-\definecolor{linkcolor}{rgb}{0.3,0,0}
-\definecolor{shadecolor}{rgb}{0.9,0.95,1}%{0.98,1.0,0.95}
-\definecolor{framecolor}{gray}{0.9}
-\definecolor{oldgray}{gray}{0.7}
-
-\newcommand{\Contact}{\subsubsection*{Contact}}
-\newcommand{\FurtherReading}{\subsubsection*{Further reading}}
-\newcommand{\FuturePlans}{\subsubsection*{Future plans}}
-\newcommand{\Separate}{\smallskip\noindent}
-\newcommand{\FinalNote}{\smallskip\noindent}
-
-\newcommand{\urlpart}{\begingroup\urlstyle{sf}\Url}
-\newcommand{\email}[1]{\href{mailto:\EMailRepl{#1}{ at }}{$\langle$\urlpart{#1}$\rangle$}}
-\newcommand{\cref}[1]{($\rightarrow\,$\ref{#1})}
-
-\ifhcarfinal
-  \let\hcarshaded=\shaded
-  \let\endhcarshaded=\endshaded
-\else
-  \newsavebox{\shadedbox}
-  \newlength{\shadedboxwidth}
-  \def\hcarshaded
-    {\begingroup
-     \setlength{\shadedboxwidth}{\linewidth}%
-     \addtolength{\shadedboxwidth}{-2\fboxsep}%
-     \begin{lrbox}{\shadedbox}%
-     \begin{minipage}{\shadedboxwidth}\ignorespaces}
-  \def\endhcarshaded
-    {\end{minipage}%
-     \end{lrbox}%
-     \noindent
-     \colorbox{shadecolor}{\usebox{\shadedbox}}%
-     \endgroup}
-\fi
-
-\ifhcarfinal
-  \newenvironment{hcartabularx}
-    {\tabularx{\linewidth}{l>{\raggedleft}X}}
-    {\endtabularx}
-\else
-  \newenvironment{hcartabularx}
-    {\begin{tabular}{@{}m{.3\linewidth}@{}>{\raggedleft}p{.7\linewidth}@{}}}
-    {\end{tabular}}
-\fi
-
-\ifhcarfinal
-  \let\hcartoprule=\toprule
-  \let\hcarbottomrule=\bottomrule
-\else
-  \let\hcartoprule=\hline
-  \let\hcarbottomrule=\hline
-\fi
-
-\define@key{hcarentry}{chapter}[]{\let\level\chapter}
-\define@key{hcarentry}{section}[]{\let\level\section}
-\define@key{hcarentry}{subsection}[]{\let\level\subsection}
-\define@key{hcarentry}{subsubsection}[]{\let\level\subsubsection}
-\define@key{hcarentry}{level}{\let\level=#1}
-%\define@key{hcarentry}{label}{\def\entrylabel{\label{#1}}}
-\define@key{hcarentry}{new}[]%
-  {\let\startnew=\hcarshaded\let\stopnew=\endhcarshaded
-   \def\startupdated{\let\orig@addv\addvspace\let\addvspace\@gobble}%
-   \def\stopupdated{\let\addvspace\orig@addv}}
-\define@key{hcarentry}{old}[]{\def\normalcolor{\color{oldgray}}\color{oldgray}}%
-\define@key{hcarentry}{updated}[]%
-  {\def\startupdated
-    {\leavevmode\let\orig@addv\addvspace\let\addvspace\@gobble\hcarshaded}%
-   \def\stopupdated{\endhcarshaded\let\addvspace\orig@addv}}
-
-\def\@makeheadererror{\PackageError{hcar}{hcarentry without header}{}}
-
-\newenvironment{hcarentry}[2][]%
-{\let\level\subsection
- \let\startupdated=\empty\let\stopupdated=\empty
- \let\startnew=\empty\let\stopnew=\empty
-%\let\entrylabel=\empty
- \global\let\@makeheaderwarning\@makeheadererror
- \setkeys{hcarentry}{#1}%
- \startnew\startupdated
- \level{#2}%
- % test:
- \global\let\@currentlabel\@currentlabel
-%\stopupdated
- \let\report@\empty
- \let\groupleaders@\empty
- \let\members@\empty
- \let\contributors@\empty
- \let\participants@\empty
- \let\developers@\empty
- \let\maintainer@\empty
- \let\status@\empty
- \let\release@\empty
- \let\portability@\empty
- \let\entry@\empty}%
-{\stopnew\@makeheaderwarning}%
-
-\renewcommand{\labelitemi}{$\circ$}
-\settowidth{\leftmargini}{\labelitemi}
-\addtolength{\leftmargini}{\labelsep}
-
-\newcommand*\MakeKey[2]%
-  {\expandafter\def\csname #1\endcsname##1%
-     {\expandafter\def\csname #1@\endcsname{\Key@{#2}{##1}}\ignorespaces}}
-\MakeKey{report}{Report by:}
-\MakeKey{status}{Status:}
-\MakeKey{groupleaders}{Group leaders:}
-\MakeKey{members}{Members:}
-\MakeKey{contributors}{Contributors:}
-\MakeKey{participants}{Participants:}
-\MakeKey{developers}{Developers:}
-\MakeKey{maintainer}{Maintainer:}
-\MakeKey{release}{Current release:}
-\MakeKey{portability}{Portability:}
-\MakeKey{entry}{Entry:}
-
-\newcommand\Key@[2]{#1 & #2\tabularnewline}
-
-\newcommand\makeheader
-{\smallskip
- \begingroup
- \sffamily
- \small
- \noindent
- \let\ohrule\hrule
- \def\hrule{\color{framecolor}\ohrule}%
- \begin{hcartabularx}
- \hline
- \report@
- \groupleaders@
- \members@
- \participants@
- \developers@
- \contributors@
- \maintainer@
- \status@
- \release@
- \portability@
- \hcarbottomrule
- \end{hcartabularx}
- \endgroup
- \stopupdated
- \global\let\@makeheaderwarning\empty
- \@afterindentfalse
- \@xsect\smallskipamount}
-
-% columns/linebreaks, interchanged
-\newcommand\NCi{&\let\NX\NCii}%
-\newcommand\NCii{&\let\NX\NL}%
-\newcommand\NL{\\\let\NX\NCi}%
-\let\NX\NCi
-\newcommand\hcareditor[1]{&#1 (ed.)&\\}
-\newcommand\hcarauthor[1]{#1\NX}%
diff --git a/hcar/template.tex b/hcar/template.tex
deleted file mode 100644
--- a/hcar/template.tex
+++ /dev/null
@@ -1,31 +0,0 @@
-\documentclass{article}
-
-\usepackage{hcar}
-
-\begin{document}
-
-\begin{hcarentry}{CoreErlang}
-\report{Henrique Ferreiro Garc\'{i}a}
-\participants{David Castro P\'{e}rez}
-\status{Parses and pretty-prints all of Core Erlang}
-\makeheader
-
-CoreErlang is a haskell library which consists on a parser and
-pretty-printer for the intermediate language used by Erlang. The parser uses
-the Parsec library and the pretty-printer was modelled after the
-corresponding module of the haskell-src package. It also exposes a Syntax
-module which allows easy manipulation of terms.
-
-It is able to parse and pretty print all of Core Erlang. Remaining work
-includes customizing the pretty printer and refining the syntax interface.
-
-\FurtherReading
-
-\begin{itemize}
-\item It can be downloaded from hackage at: 
-\item A darcs repository is available at: \url{http://code.haskell.org/CoreErlang}
-\end{itemize}
-
-\end{hcarentry}
-
-\end{document}
