add a twitter fetcher and update the protocol to be cleaner