diff --git a/Data/Octree.hs b/Data/Octree.hs
--- a/Data/Octree.hs
+++ b/Data/Octree.hs
@@ -12,5 +12,4 @@
 
 import Prelude hiding(lookup)
 import Data.Octree.Internal
-import Data.Octree.Instances()
 
diff --git a/Data/Octree/Instances.hs b/Data/Octree/Instances.hs
deleted file mode 100644
--- a/Data/Octree/Instances.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-module Data.Octree.Instances where
-
-import Data.Octree.Internal
-
--- Additional instances for convenience
-
-import Data.Functor
-import Data.Foldable hiding(foldr1)
-import Data.Traversable
-
-import Data.Monoid
-
-instance Functor Octree where
-  fmap f (Leaf l) = Leaf . fmap (\(c, a) -> (c, f a)) $  l
-  fmap f (Node { split = sp,
-                 nwu   = anwu,
-                 nwd   = anwd,
-                 neu   = aneu,
-                 ned   = aned,
-                 swu   = aswu,
-                 swd   = aswd,
-                 seu   = aseu,
-                 sed   = ased }) = Node { split = sp,
-                                          nwu   = fmap f anwu,
-                                          nwd   = fmap f anwd,
-                                          neu   = fmap f aneu,
-                                          ned   = fmap f aned,
-                                          swu   = fmap f aswu,
-                                          swd   = fmap f aswd,
-                                          seu   = fmap f aseu,
-                                          sed   = fmap f ased }
-
--- TODO: test Foldable instance
-instance Foldable Octree where
-  foldMap f (Leaf l)                = foldMap (f . snd) l
-  foldMap f n@(Node { split = sp }) = Prelude.foldr1 mappend . map (foldMap f) . subnodes $ n
-
--- TODO: test Traversable instance
---instance Traversable where
-
diff --git a/Data/Octree/Internal.hs b/Data/Octree/Internal.hs
--- a/Data/Octree/Internal.hs
+++ b/Data/Octree/Internal.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE ScopedTypeVariables, DisambiguateRecordFields #-}
+{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
 module Data.Octree.Internal(Vector3(..), dist,
                             Octree(..), lookup, nearest, withinRange, fromList, toList, insert,
                             -- internal
@@ -10,11 +11,15 @@
                             subnodes
                             ) where
 
+import Data.Functor    (Functor    (..))
+import Data.Foldable   (Foldable   (..))
+import Data.Traversable(Traversable(..))
+
 import Data.Vector.V3
 import Data.Vector.Class
 
 --import Text.Show
-import Prelude hiding(lookup)
+import Prelude hiding(lookup, foldr)
 import Data.List(sort, sortBy)
 import Data.Maybe(maybeToList, listToMaybe)
 import Data.Bits((.&.))
@@ -33,7 +38,7 @@
 -- | Datatype for nodes within Octree.
 data Octree a = Node { split :: Vector3,
                        nwu, nwd, neu, ned, swu, swd, seu, sed :: Octree a } |
-                Leaf { unLeaf :: [(Vector3, a)] }  deriving (Show)
+                Leaf { unLeaf :: [(Vector3, a)] }  deriving (Show, Functor, Foldable, Traversable)
 
 -- | Enumerated type to indicate octants in 3D-space relative to given center.
 data ODir = SWD | SED | NWD | NED | SWU | SEU | NWU | NEU deriving (Eq, Ord, Enum, Show, Bounded)
diff --git a/Octree.cabal b/Octree.cabal
--- a/Octree.cabal
+++ b/Octree.cabal
@@ -1,5 +1,5 @@
 name:                Octree
-version:             0.5.2
+version:             0.5.3
 stability:           beta
 homepage:            https://github.com/mgajda/octree
 package-url:         http://hackage.haskell.org/package/octree
@@ -8,6 +8,7 @@
 category:            Data
 license:             BSD3
 license-file:        LICENSE
+extra-source-files:  changelog
 
 author:              Michal J. Gajda
 copyright:           Copyright by Michal J. Gajda '2012
@@ -26,7 +27,7 @@
 Library
    build-depends:    base>=4.0 && < 4.8, AC-Vector >= 2.3.0, QuickCheck >= 2.4.0
    exposed-modules:  Data.Octree
-   other-modules:    Data.Octree.Internal, Data.Octree.Instances
+   other-modules:    Data.Octree.Internal
    exposed:          True
    extensions:       ScopedTypeVariables
 
diff --git a/README.lhs b/README.lhs
--- a/README.lhs
+++ b/README.lhs
@@ -2,7 +2,7 @@
 ======
 This is a simple Octree implementation in Haskell.
 
-[![Build Status](https://api.travis-ci.org/mgajda/octree.png?branch=master)](https://api.travis-ci.org/mgajda/octree.png)
+[![Build Status](https://api.travis-ci.org/mgajda/octree.png?branch=master)](https://www.travis-ci.org/mgajda/octree)
 
 To use simply:
 
@@ -25,3 +25,6 @@
 *For now it uses AC-Vector package for vectors, but I may change it to use Tensor package used by OpenGL package, if there is interest.*
 *So far I still wait for package with vector operations (like dot, cross producton, vector projection and rejection) on Tensor types.*
 
+Official releases are on [Hackage](http://hackage.haskell.org/package/Octree).
+
+This package is also a part of [Stackage](http://daniel-diaz.github.io/stackagelist/) - a stable subset of Hackage.
diff --git a/changelog b/changelog
new file mode 100644
--- /dev/null
+++ b/changelog
@@ -0,0 +1,4 @@
+-*-Changelog-*-
+
+0.5.3 Apr 2014
+	* Switched to automatically derived Functor, Foldable, Traversable
diff --git a/tests/test_Octree.hs b/tests/test_Octree.hs
--- a/tests/test_Octree.hs
+++ b/tests/test_Octree.hs
@@ -2,7 +2,6 @@
 module Main(main) where
 
 import Data.Octree.Internal
-import Data.Octree.Instances()
 import Data.Octree() -- test that interface module is not broken
 import Prelude hiding(lookup)
 import Data.List(sort, sortBy)
