first draft (twisted + docopt)