Move mergeable to Semigroup