protected function setName($name) {
    if (!Preg::match($name, self::PATTERN_NAME)) {
      throw new InvalidArgumentException(sprintf("name can only be of '%s'. '%s' given", self::PATTERN_NAME, $name));
    }
    $this->name = $name;
    return $this;
  }