Merged changes from jksolbakken. It's not a google app engine app.