example implementation of the use case driven approach