An age old project I did back in 2009, see the readme for more info