Full working project
Just putting this on github.