added three agent classes