refactor karma view methods into VotableCompositeView, fix votable-id collision bug