implement gathering method