more modular data flow