How to write my own "Datasource Program" aka "Special Agent"