example implementation of the use case driven approach mentioned in Robert C. Martins talk