Complete source code is available at github.com