refactor to use concat