implement Agent#step()