example implementation using the use case driven approach