Agent implementation
 - initial commit