diff --git a/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php b/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
index 2f41f43..7b94d83 100644
--- a/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityCrudHookTest.php
@@ -451,7 +451,7 @@ public function testTaxonomyVocabularyHooks() {
     ));
 
     $_SESSION['entity_crud_hook_test'] = array();
-    $vocabulary->name = 'New name';
+    $vocabulary->setName('New name');
     $vocabulary->save();
 
     $this->assertHookMessageOrder(array(
diff --git a/core/modules/taxonomy/src/Entity/Vocabulary.php b/core/modules/taxonomy/src/Entity/Vocabulary.php
index aa47b3a..aab1a43 100644
--- a/core/modules/taxonomy/src/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/src/Entity/Vocabulary.php
@@ -50,21 +50,21 @@ class Vocabulary extends ConfigEntityBundleBase implements VocabularyInterface {
    *
    * @var string
    */
-  public $vid;
+  protected $vid;
 
   /**
    * Name of the vocabulary.
    *
    * @var string
    */
-  public $name;
+  protected $name;
 
   /**
    * Description of the vocabulary.
    *
    * @var string
    */
-  public $description;
+  protected $description;
 
   /**
    * The type of hierarchy allowed within the vocabulary.
@@ -76,14 +76,14 @@ class Vocabulary extends ConfigEntityBundleBase implements VocabularyInterface {
    *
    * @var integer
    */
-  public $hierarchy = TAXONOMY_HIERARCHY_DISABLED;
+  protected $hierarchy = TAXONOMY_HIERARCHY_DISABLED;
 
   /**
    * The weight of this vocabulary in relation to other vocabularies.
    *
    * @var integer
    */
-  public $weight = 0;
+  protected $weight = 0;
 
   /**
    * {@inheritdoc}
@@ -95,6 +95,69 @@ public function id() {
   /**
    * {@inheritdoc}
    */
+  public function getWeight() {
+    return $this->get('weight');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDescription() {
+    return $this->get('description');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getHierarchy() {
+    return $this->get('hierarchy');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getName() {
+    return $this->get('name');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setWeight($weight) {
+    return $this->set('weight', $weight);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setHierarchy($hierarchy) {
+    return $this->set('hierarchy', $hierarchy);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setDescription($description) {
+    return $this->set('description', $description);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setVid($machineName) {
+    return $this->set('vid', $machineName);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setName($name) {
+    return $this->set('name', $name);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     parent::postSave($storage, $update);
 
diff --git a/core/modules/taxonomy/src/Form/OverviewTerms.php b/core/modules/taxonomy/src/Form/OverviewTerms.php
index 23db546..a1f9b8b 100644
--- a/core/modules/taxonomy/src/Form/OverviewTerms.php
+++ b/core/modules/taxonomy/src/Form/OverviewTerms.php
@@ -214,7 +214,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Vocabular
         '#type' => 'link',
         '#title' => $term->getName(),
       ) + $term->urlInfo()->toRenderArray();
-      if ($taxonomy_vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
+      if ($taxonomy_vocabulary->getHierarchy() != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
         $parent_fields = TRUE;
         $form['terms'][$key]['term']['tid'] = array(
           '#type' => 'hidden',
@@ -328,7 +328,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Vocabular
       'group' => 'term-weight',
     );
 
-    if ($taxonomy_vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
+    if ($taxonomy_vocabulary->getHierarchy() != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
       $form['actions'] = array('#type' => 'actions', '#tree' => FALSE);
       $form['actions']['submit'] = array(
         '#type' => 'submit',
diff --git a/core/modules/taxonomy/src/Tests/EfqTest.php b/core/modules/taxonomy/src/Tests/EfqTest.php
index b9a2dc6..8ce2c84 100644
--- a/core/modules/taxonomy/src/Tests/EfqTest.php
+++ b/core/modules/taxonomy/src/Tests/EfqTest.php
@@ -55,7 +55,7 @@ function testTaxonomyEfq() {
       ->condition('vid', $vocabulary2->id())
       ->execute();
     sort($result);
-    $this->assertEqual(array_keys($terms2), $result, format_string('Taxonomy terms from the %name vocabulary were retrieved by entity query.', array('%name' => $vocabulary2->name)));
+    $this->assertEqual(array_keys($terms2), $result, format_string('Taxonomy terms from the %name vocabulary were retrieved by entity query.', array('%name' => $vocabulary2->getName())));
     $tid = reset($result);
     $ids = (object) array(
       'entity_type' => 'taxonomy_term',
diff --git a/core/modules/taxonomy/src/Tests/TermFieldTest.php b/core/modules/taxonomy/src/Tests/TermFieldTest.php
index 37f59ee..2548df6 100644
--- a/core/modules/taxonomy/src/Tests/TermFieldTest.php
+++ b/core/modules/taxonomy/src/Tests/TermFieldTest.php
@@ -168,7 +168,7 @@ function testTaxonomyTermFieldChangeMachineName() {
     $this->field_storage->save();
     // Change the machine name.
     $new_name = drupal_strtolower($this->randomName());
-    $this->vocabulary->vid = $new_name;
+    $this->vocabulary->setVid($new_name);
     $this->vocabulary->save();
 
     // Check that the field instance is still attached to the vocabulary.
diff --git a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
index fac60e3..c2b0da3 100644
--- a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
+++ b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
@@ -88,7 +88,7 @@ function testTaxonomyTokenReplacement() {
     $tests['[term:url]'] = url('taxonomy/term/' . $term1->id(), array('absolute' => TRUE));
     $tests['[term:node-count]'] = 0;
     $tests['[term:parent:name]'] = '[term:parent:name]';
-    $tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->name);
+    $tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->getName());
 
     foreach ($tests as $input => $expected) {
       $output = $token_service->replace($input, array('term' => $term1), array('langcode' => $language_interface->id));
@@ -105,7 +105,7 @@ function testTaxonomyTokenReplacement() {
     $tests['[term:parent:name]'] = String::checkPlain($term1->getName());
     $tests['[term:parent:url]'] = url('taxonomy/term/' . $term1->id(), array('absolute' => TRUE));
     $tests['[term:parent:parent:name]'] = '[term:parent:parent:name]';
-    $tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->name);
+    $tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->getName());
 
     // Test to make sure that we generated something for each token.
     $this->assertFalse(in_array(0, array_map('strlen', $tests)), 'No empty tokens generated.');
@@ -119,7 +119,7 @@ function testTaxonomyTokenReplacement() {
     $tests['[term:name]'] = $term2->getName();
     $tests['[term:description]'] = $term2->getDescription();
     $tests['[term:parent:name]'] = $term1->getName();
-    $tests['[term:vocabulary:name]'] = $this->vocabulary->name;
+    $tests['[term:vocabulary:name]'] = $this->vocabulary->getName();
 
     foreach ($tests as $input => $expected) {
       $output = $token_service->replace($input, array('term' => $term2), array('langcode' => $language_interface->id, 'sanitize' => FALSE));
@@ -129,8 +129,8 @@ function testTaxonomyTokenReplacement() {
     // Generate and test sanitized tokens.
     $tests = array();
     $tests['[vocabulary:vid]'] = $this->vocabulary->id();
-    $tests['[vocabulary:name]'] = String::checkPlain($this->vocabulary->name);
-    $tests['[vocabulary:description]'] = Xss::filter($this->vocabulary->description);
+    $tests['[vocabulary:name]'] = String::checkPlain($this->vocabulary->getName());
+    $tests['[vocabulary:description]'] = Xss::filter($this->vocabulary->getDescription());
     $tests['[vocabulary:node-count]'] = 1;
     $tests['[vocabulary:term-count]'] = 2;
 
@@ -143,8 +143,8 @@ function testTaxonomyTokenReplacement() {
     }
 
     // Generate and test unsanitized tokens.
-    $tests['[vocabulary:name]'] = $this->vocabulary->name;
-    $tests['[vocabulary:description]'] = $this->vocabulary->description;
+    $tests['[vocabulary:name]'] = $this->vocabulary->getName();
+    $tests['[vocabulary:description]'] = $this->vocabulary->getDescription();
 
     foreach ($tests as $input => $expected) {
       $output = $token_service->replace($input, array('vocabulary' => $this->vocabulary), array('langcode' => $language_interface->id, 'sanitize' => FALSE));
diff --git a/core/modules/taxonomy/src/VocabularyInterface.php b/core/modules/taxonomy/src/VocabularyInterface.php
index 80c7781..f83e52e 100644
--- a/core/modules/taxonomy/src/VocabularyInterface.php
+++ b/core/modules/taxonomy/src/VocabularyInterface.php
@@ -14,4 +14,95 @@
  */
 interface VocabularyInterface extends ConfigEntityInterface {
 
+  /**
+   * Sets the vocabulary name.
+   *
+   * @param string $name
+   *   The vocabulary name.
+   *
+   * @return \Drupal\taxonomy\VocabularyInterface
+   *   The called vocabulary entity.
+   */
+  public function setName($name);
+
+  /**
+   * Returns the vocabulary name.
+   *
+   * @return string
+   *   The vocabulary name.
+   */
+  public function getName();
+
+  /**
+   * Sets the vocabulary weight.
+   *
+   * @param integer $weight
+   *   The weight of vocabulary.
+   *
+   * @return \Drupal\taxonomy\VocabularyInterface
+   *   The called vocabulary entity.
+   */
+  public function setWeight($weight);
+
+  /**
+   * Returns the vocabulary weight.
+   *
+   * @return integer
+   *   The vocabulary weight.
+   */
+  public function getWeight();
+
+  /**
+   * Sets the vocabulary hierarchy.
+   *
+   * @param integer $hierarchy
+   *   The hierarchy type of vocabulary.
+   *   Possible values:
+   *    - TAXONOMY_HIERARCHY_DISABLED: No parents.
+   *    - TAXONOMY_HIERARCHY_SINGLE: Single parent.
+   *    - TAXONOMY_HIERARCHY_MULTIPLE: Multiple parents.
+   *
+   * @return \Drupal\taxonomy\VocabularyInterface
+   *   The called vocabulary entity.
+   */
+  public function setHierarchy($hierarchy);
+
+  /**
+   * Returns the vocabulary hierarchy.
+   *
+   * @return integer
+   *   The vocabulary hierarchy.
+   */
+  public function getHierarchy();
+
+  /**
+   * Sets the vocabulary description.
+   *
+   * @param string description
+   *   The vocabulary description.
+   *
+   * @return \Drupal\taxonomy\VocabularyInterface
+   *   The called vocabulary entity.
+   */
+  public function setDescription($description);
+
+  /**
+   * Returns the vocabulary description.
+   *
+   * @return string
+   *   The vocabulary description.
+   */
+  public function getDescription();
+
+  /**
+   * Sets the vocabulary vid.
+   *
+   * @param string $machineName
+   *   The vocabulary machine name.
+   *
+   * @return \Drupal\taxonomy\VocabularyInterface
+   *   The called vocabulary entity.
+   */
+  public function setVid($machineName);
+
 }
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index 61ecb8b..b892414 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -229,8 +229,8 @@ function taxonomy_check_vocabulary_hierarchy(VocabularyInterface $vocabulary, $c
       $hierarchy = TAXONOMY_HIERARCHY_SINGLE;
     }
   }
-  if ($hierarchy != $vocabulary->hierarchy) {
-    $vocabulary->hierarchy = $hierarchy;
+  if ($hierarchy != $vocabulary->getHierarchy()) {
+    $vocabulary->setHierarchy($hierarchy);
     $vocabulary->save();
   }
 
