reduce extra call