just moved my code from bitbucket.org to here