Code at GitHUB - take a look for more detail