more efficient (gather) and (schemefy)