Why do you duplicate all this code? For shortening, all you have to do is to set requiresShortenedURL to YES, and ShareKit feeds Buffer with shortened URL. If you think user might configure if wants shorten URL by Buffer or ShareKit, just return this configuration setting in requiresShortenedURL.