removed hole class, updated union and merge methods to be recursive, still need to update diff