Hello again. I have started to code my proposal. I have a little patch with the easiest part (dillo protocol part) so people can test it if they want. The patch is highly experimental. Dpid is not modified so (until it(the most complex part)) DPI tree and names of protocols DPIs will be break. It can be solved with a few moves and renames, but do not try it in a non test system if you do not known what are you doing. The patch works with current cvs. After compiling a dillo with the experimental protocol patch when dillo finds a url that do not start with http: or about: it will ask to dpid for a service called protocol_PROTOCOL-PART-OF-URL (examples: protocol_ftp for ftp urls, protocol_data for data urls , protocol_javascript for javascript urls(if you delete the code in html.c that intercepts javascript), ...). I will use protocol_https for examples from now. How dpid is not changed it will exec ~/.dillo/dpi/protocol_https/protocol_https.dpi or $dpi_lib/dpi/protocol_https/protocol_https.dpi (in the case that the file was there when dpid started) The changed dpid will exec the user selected DPI for that service when done. Until that If anybody want to play with this code apply the patch, compile with care(do not install it for example), create a DPI(a filter script one for example) in .../dpi/protocol_YOUR-PREFERED-PROTOCOL/protocol_YOUR-PREFERED-PROTOCOL.filter.dpi , stop and restart dpid and test pointing compiled dillo to YOUR-PREFERED-PROTOCOL:WHATEVER-YOU-WANT I have make a script for javascript urls to test it(see upper comment). I will try to code a more complex part (mime) now. Diego.