Writing special purpose agents