added generic data path