Mercurial is a DistributedSCM, which is a more general model that's a proper superset of the centralised SCM model. If you want to change your development pattern as little as possible and switch from CVS or Subversion for reasons of non-brokenness (CVS does not have atomic commits), speed, or future flexibility, Mercurial can be used in a way that's very similar to most centralised SCM systems.