diff --git a/ChangeLog.md b/ChangeLog.md
index 8c4ff57..c16b003 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,33 +1,75 @@
-# Changelog for Habulara
+# CHANGELOG
-## 0.0.0.2 (2021-02-05)
+All notable changes to this project will be documented in this file.
+This project adheres to [Haskell Package Versioning
+Policy](https://pvp.haskell.org/).
-Refactoring (or rewriting to be precise) the prototype.
+
+## [Unreleased]
-Essentially:
-- Entire implementation is based on a custom monad that spans across
- the library and application.
-- Processing is done in a streaming-fashion, based on [conduit
- library](https://hackage.haskell.org/package/conduit).
-- CLI application is now based on sub-commands.
-
-There are some functionality removed temporarily which will be added
-later (such as some field value operators, file encoding handler,
-etc).
+
+## [0.0.0.3] - 2021-02-09
+### Features
+- accept non-UTF8 CSV input text data
+- **operators:** add new conditional operators
-Also, we have significant performance regression due to the new
-underlying code architecture. This is not much worrying as
-expressiveness and control over the program execution is much more
-important at the moment.
+
+## [0.0.0.2] - 2021-02-05
### Features
+- enable UTF-8 encoding if the input file is not encoded as such
+- add Date/Time type
+- **app:** start proper CLI user experience, add "process" command
-* **app:** start proper CLI user experience, add "process" command ([2834a59](https://github.com/telostat/habulara/commit/2834a59a8f5e1ab4d137e53dacb371902be5908c))
+### Bug Fixes
+- lower the tail of text while capitalizing
-## 0.0.0.1 (2020-12-22)
+### Code Refactoring
+- update README
+- review and reorganize examples, benchmarks
+- review Mapping module, change and adopt some definitions
+- re-implement DSL, make application work again
+- make field accessors work with Value arguments
+- re-organize Mapping and Operation modules, reformat
+- purge old implementation
+- add date/time operators
+- add boolean operations
+- add textual operators
+- add numeric operators
+- add type-guarded value operators
+- change final 'Value' constructor name, adopt in operations
+- rename 'VBoolean' constructor to 'VBool'
+- rename 'VDecimal' constructor to 'VNumber'
+- drop Integer based 'VInt' value type
+- re-organize types under Data.Habulara.Core.Types
+- drop ByteString based 'VRaw' value type
+- improve value conversion semantics
+- add 'liftMaybe' to lift 'Maybe' into 'MonadHabulara'
+- update stack.yaml, regenerate .cabal file
+- start with tests (QuickCheck), ditch Examples, reorganize
+- revisit Operations module
+- split Types modules, improve Value and Operations
+- add another convenience for running HabularaT inside IO
+- add OverloadedString extension by default
+- add convenience function for running HabularaT inside IO
+- implement 'NonEmpty' type
+- update sample data generator and add benchmark script
+- fix space leak due to laziness in incrementing row counter
+- return total number of rows processed from mapper
+- reorganize core library, start using Conduit
+- introduce VRaw (ByteString-based Value type)
+- continue refactoring
+- start refactoring
+
+
+## 0.0.0.1 - 2020-12-22
### Features
+- add code generator for Haskell `data` definitions
+- add initial DSL implementation for mapping
+
-* add code generator for Haskell `data` definitions ([8e6e3d6](https://github.com/telostat/habulara/commit/8e6e3d65325f6154d2f19cacc8d64a0e927ca89f))
-* add initial DSL implementation for mapping ([bb5c56f](https://github.com/telostat/habulara/commit/bb5c56f97ac56e167f3eb4e38249dd4a61468439))
+[Unreleased]: https://github.com/telostat/habulara/compare/0.0.0.3...HEAD
+[0.0.0.3]: https://github.com/telostat/habulara/compare/0.0.0.2...0.0.0.3
+[0.0.0.2]: https://github.com/telostat/habulara/compare/0.0.0.1...0.0.0.2