changed OpListener to Op