introduce flow and flow units to separate use cases logic