refactor twitterable concern, better separation of concerns, better test coverage