refactor list api