nicer demo app
some error handling