created base agent class