App versions

Please review @ssorallen 
Use linebreaks liberally! Empty lines before the `return` is nice, and split `var` declarations into logical groups when it makes sense.