Adding semigroups dependency
Removing unused pattern
Adding additional instances