final app with tests