diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,7 @@
+
+0.0.3.0
+
+* add Functor and Applicative instances to fix AMP warnings
+* fix attoparsec module deprication warnings
+* add scientific dependency
+  latest attoparsec uses it for numbers
diff --git a/lib/Pdf/Toolbox/Core/IO.hs b/lib/Pdf/Toolbox/Core/IO.hs
--- a/lib/Pdf/Toolbox/Core/IO.hs
+++ b/lib/Pdf/Toolbox/Core/IO.hs
@@ -23,7 +23,7 @@
 
 import Data.Int
 import Data.Functor
-import Data.Attoparsec (Parser)
+import Data.Attoparsec.ByteString (Parser)
 import Data.ByteString (ByteString)
 import Control.Monad.IO.Class
 import Control.Exception
diff --git a/lib/Pdf/Toolbox/Core/Object/Builder.hs b/lib/Pdf/Toolbox/Core/Object/Builder.hs
--- a/lib/Pdf/Toolbox/Core/Object/Builder.hs
+++ b/lib/Pdf/Toolbox/Core/Object/Builder.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 -- | Render 'Object' to bytestring
 
@@ -23,7 +24,12 @@
 import qualified Data.ByteString.Char8 as BS8
 import qualified Data.ByteString.Lazy as BSL
 import Data.ByteString.Lazy.Builder
+
+#if MIN_VERSION_bytestring(0, 10, 4)
+#else
 import Data.ByteString.Lazy.Builder.ASCII
+#endif
+
 import Text.Printf
 
 import Pdf.Toolbox.Core.Object.Types
diff --git a/lib/Pdf/Toolbox/Core/Parsers/Object.hs b/lib/Pdf/Toolbox/Core/Parsers/Object.hs
--- a/lib/Pdf/Toolbox/Core/Parsers/Object.hs
+++ b/lib/Pdf/Toolbox/Core/Parsers/Object.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 -- | This module contains parsers for pdf objects
 
@@ -25,8 +26,13 @@
 import Data.Char
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as BS8
-import Data.Attoparsec (Parser)
+import Data.Attoparsec.ByteString (Parser)
 import qualified Data.Attoparsec.ByteString.Char8 as P
+
+#if MIN_VERSION_attoparsec(0, 12, 0)
+import qualified Data.Scientific as Scientific
+#endif
+
 import Control.Applicative
 
 import Pdf.Toolbox.Core.Object.Types
@@ -75,12 +81,18 @@
 -- Right (NumReal 1.0e-2)
 parseNumber :: Parser Number
 parseNumber = P.choice [
-  toNum <$> P.number,
+  number,
   NumReal <$> (P.signed $ read . ("0."++) . BS8.unpack <$> (P.char '.' >> P.takeWhile1 isDigit))
   ]
   where
+#if MIN_VERSION_attoparsec(0, 12, 0)
+  number = toNum <$> P.scientific
+  toNum = either NumReal NumInt . Scientific.floatingOrInteger
+#else
+  number = toNum <$> P.number
   toNum (P.I i) = NumInt $ fromIntegral i
   toNum (P.D d) = NumReal d
+#endif
 
 -- |
 -- >>> parseOnly parseStr "(hello)"
diff --git a/lib/Pdf/Toolbox/Core/Parsers/Util.hs b/lib/Pdf/Toolbox/Core/Parsers/Util.hs
--- a/lib/Pdf/Toolbox/Core/Parsers/Util.hs
+++ b/lib/Pdf/Toolbox/Core/Parsers/Util.hs
@@ -7,7 +7,7 @@
 )
 where
 
-import Data.Attoparsec (Parser)
+import Data.Attoparsec.ByteString (Parser)
 import qualified Data.Attoparsec.ByteString.Char8 as P
 import Control.Applicative (many)
 
diff --git a/lib/Pdf/Toolbox/Core/Parsers/XRef.hs b/lib/Pdf/Toolbox/Core/Parsers/XRef.hs
--- a/lib/Pdf/Toolbox/Core/Parsers/XRef.hs
+++ b/lib/Pdf/Toolbox/Core/Parsers/XRef.hs
@@ -13,7 +13,7 @@
 where
 
 import Data.Int
-import Data.Attoparsec (Parser)
+import Data.Attoparsec.ByteString (Parser)
 import qualified Data.Attoparsec.ByteString.Char8 as P
 import Control.Applicative (many)
 
diff --git a/lib/Pdf/Toolbox/Core/Writer.hs b/lib/Pdf/Toolbox/Core/Writer.hs
--- a/lib/Pdf/Toolbox/Core/Writer.hs
+++ b/lib/Pdf/Toolbox/Core/Writer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 
 -- | Write PDF files
 --
@@ -29,9 +30,15 @@
 import Data.ByteString (ByteString)
 import qualified Data.ByteString.Lazy as BSL
 import Data.ByteString.Lazy.Builder
+
+#if MIN_VERSION_bytestring(0, 10, 4)
+#else
 import Data.ByteString.Lazy.Builder.ASCII
+#endif
+
 import Data.Function
 import Data.Monoid
+import Control.Applicative
 import Control.Monad
 import Control.Monad.Trans.Class
 import Control.Monad.Trans.State
@@ -44,7 +51,7 @@
 
 -- | The monad
 newtype PdfWriter m a = PdfWriter (StateT PdfState m a)
-  deriving (Monad, MonadIO, MonadTrans)
+  deriving (Functor, Applicative, Monad, MonadIO, MonadTrans)
 
 -- | Execute writer action
 runPdfWriter :: MonadIO m
diff --git a/pdf-toolbox-core.cabal b/pdf-toolbox-core.cabal
--- a/pdf-toolbox-core.cabal
+++ b/pdf-toolbox-core.cabal
@@ -1,15 +1,16 @@
 name:                pdf-toolbox-core
-version:             0.0.2.1
+version:             0.0.3.0
 synopsis:            A collection of tools for processing PDF files.
 license:             BSD3
 license-file:        LICENSE
 author:              Yuras Shumovich
 maintainer:          Yuras Shumovich <shumovichy@gmail.com>
-copyright:           Copyright (c) Yuras Shumovich 2012-2013
+copyright:           Copyright (c) Yuras Shumovich 2012-2014
 category:            PDF
 build-type:          Simple
 cabal-version:       >=1.8
 homepage:            https://github.com/Yuras/pdf-toolbox
+extra-source-files:  changelog.md
 description:
   Low level tools for processing PDF files.
   .
@@ -49,7 +50,8 @@
   build-depends:       base >= 4.6 && < 4.8,
                        bytestring,
                        io-streams,
-                       attoparsec,
+                       attoparsec >= 0.10,
+                       scientific,
                        errors,
                        transformers,
                        containers,
