first try on use case driven design