diff --git a/nomad/datamodel/metainfo/public.py b/nomad/datamodel/metainfo/public.py
index cc22bfc99e7c8e61e4ac3bc90d26c0cbe1f1ac8e..8e40dc118eb7e2a9019f1442166df7eaa1b4bf57 100644
--- a/nomad/datamodel/metainfo/public.py
+++ b/nomad/datamodel/metainfo/public.py
@@ -2,7 +2,7 @@ import numpy as np            # pylint: disable=unused-import
 import typing                 # pylint: disable=unused-import
 from nomad.metainfo import (  # pylint: disable=unused-import
     MSection, MCategory, Category, Package, Quantity, Section, SubSection, SectionProxy,
-    Reference
+    Reference, MEnum
 )
 from nomad.metainfo.legacy import LegacyDefinition
 
@@ -2025,109 +2025,109 @@ class section_gaussian_basis_group(MSection):
         a_legacy=LegacyDefinition(name='number_of_gaussian_basis_group_exponents'))
 
 
-class section_k_band_normalized(MSection):
-    '''
-    This section stores information on a normalized $k$-band (electronic band structure)
-    evaluation along one-dimensional pathways in the $k$ (reciprocal) space given in
-    section_k_band_segment. Eigenvalues calculated at the actual $k$-mesh used for
-    energy_total evaluations, can be found in the section_eigenvalues section.
-    '''
-
-    m_def = Section(validate=False, a_legacy=LegacyDefinition(name='section_k_band_normalized'))
-
-    k_band_path_normalized_is_standard = Quantity(
-        type=bool,
-        shape=[],
-        description='''
-        If the normalized path is along the default path defined in W. Setyawan and S.
-        Curtarolo, [Comput. Mater. Sci. **49**, 299-312
-        (2010)](http://dx.doi.org/10.1016/j.commatsci.2010.05.010).
-        ''',
-        a_legacy=LegacyDefinition(name='k_band_path_normalized_is_standard'))
-
-    section_k_band_segment_normalized = SubSection(
-        sub_section=SectionProxy('section_k_band_segment_normalized'),
-        repeats=True,
-        a_legacy=LegacyDefinition(name='section_k_band_segment_normalized'))
-
-
-class section_k_band_segment_normalized(MSection):
-    '''
-    Section collecting the information on a normalized $k$-band segment. This section
-    stores band structures along a one-dimensional pathway in the $k$ (reciprocal) space.
-
-    Eigenvalues calculated at the actual $k$-mesh used for energy_total evaluations are
-    defined in section_eigenvalues and the band structures are represented as third-order
-    tensors: one dimension for the spin channels, one for the sequence of $k$ points for
-    the segment (given in number_of_k_points_per_segment), and one for the sequence of
-    eigenvalues at a given $k$ point. The values of the $k$ points in each segment are
-    stored in band_k_points. The energies and occupation for each eigenstate, at each $k$
-    point, segment, and spin channel are stored in band_energies and band_occupations,
-    respectively. The labels for the segment are specified in band_segm_labels.
-    '''
-
-    m_def = Section(validate=False, a_legacy=LegacyDefinition(name='section_k_band_segment_normalized'))
-
-    band_energies_normalized = Quantity(
-        type=np.dtype(np.float64),
-        shape=['number_of_spin_channels', 'number_of_normalized_k_points_per_segment', 'number_of_normalized_band_segment_eigenvalues'],
-        unit='joule',
-        description='''
-        $k$-dependent energies of the electronic band segment (electronic band structure)
-        with respect to the top of the valence band. This is a third-order tensor, with
-        one dimension used for the spin channels, one for the $k$ points for each segment,
-        and one for the eigenvalue sequence.
-        ''',
-        a_legacy=LegacyDefinition(name='band_energies_normalized'))
-
-    band_k_points_normalized = Quantity(
-        type=np.dtype(np.float64),
-        shape=['number_of_normalized_k_points_per_segment', 3],
-        description='''
-        Fractional coordinates of the $k$ points (in the basis of the reciprocal-lattice
-        vectors) for which the normalized electronic energies are given.
-        ''',
-        a_legacy=LegacyDefinition(name='band_k_points_normalized'))
-
-    band_occupations_normalized = Quantity(
-        type=np.dtype(np.float64),
-        shape=['number_of_spin_channels', 'number_of_normalized_k_points_per_segment', 'number_of_normalized_band_segment_eigenvalues'],
-        description='''
-        Occupation of the $k$-points along the normalized electronic band. The size of the
-        dimensions of this third-order tensor are the same as for the tensor in
-        band_energies.
-        ''',
-        a_legacy=LegacyDefinition(name='band_occupations_normalized'))
-
-    band_segm_labels_normalized = Quantity(
-        type=str,
-        shape=[2],
-        description='''
-        Start and end labels of the points in the segment (one-dimensional pathways)
-        sampled in the $k$-space, using the conventional symbols, e.g., Gamma, K, L. The
-        coordinates (fractional, in the reciprocal space) of the start and end points for
-        each segment are given in band_segm_start_end_normalized
-        ''',
-        a_legacy=LegacyDefinition(name='band_segm_labels_normalized'))
-
-    band_segm_start_end_normalized = Quantity(
-        type=np.dtype(np.float64),
-        shape=[2, 3],
-        description='''
-        Fractional coordinates of the start and end point (in the basis of the reciprocal
-        lattice vectors) of the segment sampled in the $k$ space. The conventional symbols
-        (e.g., Gamma, K, L) of the same points are given in band_segm_labels
-        ''',
-        a_legacy=LegacyDefinition(name='band_segm_start_end_normalized'))
-
-    number_of_normalized_k_points_per_segment = Quantity(
-        type=int,
-        shape=[],
-        description='''
-        Gives the number of $k$ points in the segment of the normalized band structure
-        (see section_k_band_segment_normalized).
-        ''',
-        a_legacy=LegacyDefinition(name='number_of_normalized_k_points_per_segment'))
+# class section_k_band_normalized(MSection):
+    # '''
+    # This section stores information on a normalized $k$-band (electronic band structure)
+    # evaluation along one-dimensional pathways in the $k$ (reciprocal) space given in
+    # section_k_band_segment. Eigenvalues calculated at the actual $k$-mesh used for
+    # energy_total evaluations, can be found in the section_eigenvalues section.
+    # '''
+
+    # m_def = Section(validate=False, a_legacy=LegacyDefinition(name='section_k_band_normalized'))
+
+    # k_band_path_normalized_is_standard = Quantity(
+        # type=bool,
+        # shape=[],
+        # description='''
+        # If the normalized path is along the default path defined in W. Setyawan and S.
+        # Curtarolo, [Comput. Mater. Sci. **49**, 299-312
+        # (2010)](http://dx.doi.org/10.1016/j.commatsci.2010.05.010).
+        # ''',
+        # a_legacy=LegacyDefinition(name='k_band_path_normalized_is_standard'))
+
+    # section_k_band_segment_normalized = SubSection(
+        # sub_section=SectionProxy('section_k_band_segment_normalized'),
+        # repeats=True,
+        # a_legacy=LegacyDefinition(name='section_k_band_segment_normalized'))
+
+
+# class section_k_band_segment_normalized(MSection):
+    # '''
+    # Section collecting the information on a normalized $k$-band segment. This section
+    # stores band structures along a one-dimensional pathway in the $k$ (reciprocal) space.
+
+    # Eigenvalues calculated at the actual $k$-mesh used for energy_total evaluations are
+    # defined in section_eigenvalues and the band structures are represented as third-order
+    # tensors: one dimension for the spin channels, one for the sequence of $k$ points for
+    # the segment (given in number_of_k_points_per_segment), and one for the sequence of
+    # eigenvalues at a given $k$ point. The values of the $k$ points in each segment are
+    # stored in band_k_points. The energies and occupation for each eigenstate, at each $k$
+    # point, segment, and spin channel are stored in band_energies and band_occupations,
+    # respectively. The labels for the segment are specified in band_segm_labels.
+    # '''
+
+    # m_def = Section(validate=False, a_legacy=LegacyDefinition(name='section_k_band_segment_normalized'))
+
+    # band_energies_normalized = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=['number_of_spin_channels', 'number_of_normalized_k_points_per_segment', 'number_of_normalized_band_segment_eigenvalues'],
+        # unit='joule',
+        # description='''
+        # $k$-dependent energies of the electronic band segment (electronic band structure)
+        # with respect to the top of the valence band. This is a third-order tensor, with
+        # one dimension used for the spin channels, one for the $k$ points for each segment,
+        # and one for the eigenvalue sequence.
+        # ''',
+        # a_legacy=LegacyDefinition(name='band_energies_normalized'))
+
+    # band_k_points_normalized = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=['number_of_normalized_k_points_per_segment', 3],
+        # description='''
+        # Fractional coordinates of the $k$ points (in the basis of the reciprocal-lattice
+        # vectors) for which the normalized electronic energies are given.
+        # ''',
+        # a_legacy=LegacyDefinition(name='band_k_points_normalized'))
+
+    # band_occupations_normalized = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=['number_of_spin_channels', 'number_of_normalized_k_points_per_segment', 'number_of_normalized_band_segment_eigenvalues'],
+        # description='''
+        # Occupation of the $k$-points along the normalized electronic band. The size of the
+        # dimensions of this third-order tensor are the same as for the tensor in
+        # band_energies.
+        # ''',
+        # a_legacy=LegacyDefinition(name='band_occupations_normalized'))
+
+    # band_segm_labels_normalized = Quantity(
+        # type=str,
+        # shape=[2],
+        # description='''
+        # Start and end labels of the points in the segment (one-dimensional pathways)
+        # sampled in the $k$-space, using the conventional symbols, e.g., Gamma, K, L. The
+        # coordinates (fractional, in the reciprocal space) of the start and end points for
+        # each segment are given in band_segm_start_end_normalized
+        # ''',
+        # a_legacy=LegacyDefinition(name='band_segm_labels_normalized'))
+
+    # band_segm_start_end_normalized = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=[2, 3],
+        # description='''
+        # Fractional coordinates of the start and end point (in the basis of the reciprocal
+        # lattice vectors) of the segment sampled in the $k$ space. The conventional symbols
+        # (e.g., Gamma, K, L) of the same points are given in band_segm_labels
+        # ''',
+        # a_legacy=LegacyDefinition(name='band_segm_start_end_normalized'))
+
+    # number_of_normalized_k_points_per_segment = Quantity(
+        # type=int,
+        # shape=[],
+        # description='''
+        # Gives the number of $k$ points in the segment of the normalized band structure
+        # (see section_k_band_segment_normalized).
+        # ''',
+        # a_legacy=LegacyDefinition(name='number_of_normalized_k_points_per_segment'))
 
 
 class section_k_band_segment(MSection):
@@ -2211,6 +2211,56 @@ class section_k_band_segment(MSection):
         a_legacy=LegacyDefinition(name='number_of_k_points_per_segment'))
 
 
+class section_band_gap(MSection):
+    '''
+    This section stores information for a band gap within a band structure.
+    '''
+    m_def = Section(validate=False)
+    value = Quantity(
+        type=float,
+        unit="joule",
+        description="""
+        Band gap energy.
+        """
+    )
+    type = Quantity(
+        type=MEnum("direct", "indirect"),
+        description="""
+        Type of band gap.
+        """
+    )
+    conduction_band_min_energy = Quantity(
+        type=float,
+        unit="joule",
+        description="""
+        Conduction band minimum energy.
+        """
+    )
+    valence_band_max_energy = Quantity(
+        type=float,
+        unit="joule",
+        description="""
+        Valence band maximum energy.
+        """
+    )
+    conduction_band_min_k_point = Quantity(
+        type=np.dtype(np.float64),
+        shape=[3],
+        unit="1 / meter",
+        description="""
+        Coordinate of the conduction band minimum in k-space.
+        """
+    )
+    valence_band_max_k_point = Quantity(
+        type=np.dtype(np.float64),
+        shape=[3],
+        unit="1 / meter",
+        description="""
+        Coordinate of the valence band minimum in k-space.
+        """
+    )
+
+
 class section_k_band(MSection):
     '''
     This section stores information on a $k$-band (electronic or vibrational band
@@ -2229,6 +2279,54 @@ class section_k_band(MSection):
         ''',
         a_legacy=LegacyDefinition(name='band_structure_kind'))
 
+    fermi_level = Quantity(
+        type=float,
+        unit="joule",
+        description="""
+        Fermi level reported for the band structure.
+        """
+    )
+
+    reciprocal_cell = Quantity(
+        type=np.dtype(np.float64),
+        shape=[3, 3],
+        unit="1 / meter",
+        description="""
+        The reciprocal cell within which the band structure is calculated.
+        """
+    )
+
+    brillouin_zone = Quantity(
+        type=str,
+        description="""
+        The Brillouin zone that corresponds to the reciprocal cell used in the
+        band calculation. The Brillouin Zone is defined as a list of vertices
+        and facets that are encoded with JSON. The vertices are 3D points in
+        the reciprocal space, and facets are determined by a chain of vertice
+        indices, with a right-hand ordering determining the surface normal
+        direction.
+        {
+          "vertices": [[3, 2, 1], ...]
+          "faces":  [[0, 1, 2, 3], ...]
+        }
+        """
+    )
+
+    band_gap = SubSection(sub_section=section_band_gap.m_def, repeats=False)
+
+    band_gap_spin_up = SubSection(sub_section=section_band_gap.m_def, repeats=False)
+
+    band_gap_spin_down = SubSection(sub_section=section_band_gap.m_def, repeats=False)
+
+    is_standard_path = Quantity(
+        type=bool,
+        description="""
+        Boolean indicating whether the path follows the standard path for this
+        cell. The AFLOW standard by Setyawan and Curtarolo is used
+        (https://doi.org/10.1016/j.commatsci.2010.05.010).
+        """
+    )
+
     section_k_band_segment = SubSection(
         sub_section=SectionProxy('section_k_band_segment'),
         repeats=True,
@@ -4330,10 +4428,10 @@ class section_single_configuration_calculation(MSection):
         repeats=True,
         a_legacy=LegacyDefinition(name='section_energy_van_der_Waals'))
 
-    section_k_band_normalized = SubSection(
-        sub_section=SectionProxy('section_k_band_normalized'),
-        repeats=True,
-        a_legacy=LegacyDefinition(name='section_k_band_normalized'))
+    # section_k_band_normalized = SubSection(
+        # sub_section=SectionProxy('section_k_band_normalized'),
+        # repeats=True,
+        # a_legacy=LegacyDefinition(name='section_k_band_normalized'))
 
     section_k_band = SubSection(
         sub_section=SectionProxy('section_k_band'),
diff --git a/nomad/metainfo/encyclopedia.py b/nomad/metainfo/encyclopedia.py
index 1d160896bc950200ad5a02bf8f0aef1451733357..b435c27d7d4ab4073fd1e982288c5351e0fa01a8 100644
--- a/nomad/metainfo/encyclopedia.py
+++ b/nomad/metainfo/encyclopedia.py
@@ -1,6 +1,6 @@
 import numpy as np
 from elasticsearch_dsl import InnerDoc
-from nomad.metainfo import MSection, Section, SubSection, Quantity, MEnum, units
+from nomad.metainfo import MSection, Section, SectionProxy, SubSection, Quantity, Reference, MEnum, units
 
 
 class WyckoffVariables(MSection):
@@ -408,230 +408,258 @@ class Calculation(MSection):
     )
 
 
-class BandGap(MSection):
-    m_def = Section(
-        a_flask=dict(skip_none=True),
-        a_elastic=dict(type=InnerDoc),
-        description="""
-        Stores information related to a band gap that has bee identified within
-        the band structure.
-        """
-    )
-    value = Quantity(
-        type=float,
-        unit=units.J,
-        description="""
-        Band gap energy.
-        """
-    )
-    type = Quantity(
-        type=MEnum("direct", "indirect"),
-        description="""
-        Type of band gap.
-        """
-    )
-    conduction_band_min_energy = Quantity(
-        type=float,
-        unit=units.J,
-        description="""
-        Conduction band minimum energy.
-        """
-    )
-    valence_band_max_energy = Quantity(
-        type=float,
-        unit=units.J,
-        description="""
-        Valence band maximum energy.
-        """
-    )
-    conduction_band_min_k_point = Quantity(
-        type=np.dtype(np.float64),
-        shape=[3],
-        unit=units.m**(-1),
-        description="""
-        Coordinate of the conduction band minimum in k-space.
-        """
-    )
-    valence_band_max_k_point = Quantity(
-        type=np.dtype(np.float64),
-        shape=[3],
-        unit=units.m**(-1),
-        description="""
-        Coordinate of the valence band minimum in k-space.
-        """
-    )
+# class BandGap(MSection):
+    # m_def = Section(
+        # a_flask=dict(skip_none=True),
+        # a_elastic=dict(type=InnerDoc),
+        # description="""
+        # Stores information related to a band gap that has bee identified within
+        # the band structure.
+        # """
+    # )
+    # value = Quantity(
+        # type=float,
+        # unit=units.J,
+        # description="""
+        # Band gap energy.
+        # """
+    # )
+    # type = Quantity(
+        # type=MEnum("direct", "indirect"),
+        # description="""
+        # Type of band gap.
+        # """
+    # )
+    # conduction_band_min_energy = Quantity(
+        # type=float,
+        # unit=units.J,
+        # description="""
+        # Conduction band minimum energy.
+        # """
+    # )
+    # valence_band_max_energy = Quantity(
+        # type=float,
+        # unit=units.J,
+        # description="""
+        # Valence band maximum energy.
+        # """
+    # )
+    # conduction_band_min_k_point = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=[3],
+        # unit=units.m**(-1),
+        # description="""
+        # Coordinate of the conduction band minimum in k-space.
+        # """
+    # )
+    # valence_band_max_k_point = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=[3],
+        # unit=units.m**(-1),
+        # description="""
+        # Coordinate of the valence band minimum in k-space.
+        # """
+    # )
+
+
+# class BandSegment(MSection):
+    # m_def = Section(
+        # a_flask=dict(skip_none=True),
+        # a_elastic=dict(type=InnerDoc),
+        # description="""
+        # Represents a continuous path segment starting from a specific k-point
+        # and ending in another.
+        # """
+    # )
+    # energies = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=["1..2", "1..*", "1..*"],
+        # unit=units.m**(-1),
+        # description="""
+        # The energies of the bands as a 3D array with size [n_spin_channels,
+        # n_bands, n_k_points]. By default the spin down channel is given first
+        # and the spin up channel is second.
+        # """
+    # )
+    # k_points = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=["1..*", 3],
+        # unit=units.m**(-1),
+        # description="""
+        # Path of the band structure in reciprocal space.
+        # """
+    # )
+    # labels = Quantity(
+        # type=np.dtype('str'),
+        # shape=[1],
+        # description="""
+        # The start end end labels for the k points in this segment.
+        # """
+    # )
+
+
+# class ElectronicBandStructure(MSection):
+    # m_def = Section(
+        # a_flask=dict(skip_none=True),
+        # a_elastic=dict(type=InnerDoc),
+        # description="""
+        # Stores information related to an electronic band structure.
+        # """
+    # )
+    # scc_index = Quantity(
+        # type=int,
+        # description="""
+        # Index of the single configuration calculation that contains the band
+        # structure.
+        # """
+    # )
+    # fermi_level = Quantity(
+        # type=float,
+        # unit=units.J,
+        # description="""
+        # Fermi level reported for the band structure.
+        # """
+    # )
+    # reciprocal_cell = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=[3, 3],
+        # unit=units.m**(-1),
+        # description="""
+        # The reciprocal cell within which the band structure is calculated.
+        # """
+    # )
+    # brillouin_zone = Quantity(
+        # type=str,
+        # description="""
+        # The Brillouin zone that corresponds to the reciprocal cell used in the
+        # band calculation. The Brillouin Zone is defined as a list of vertices
+        # and facets that are encoded with JSON. The vertices are 3D points in
+        # the reciprocal space, and facets are determined by a chain of vertice
+        # indices, with a right-hand ordering determining the surface normal
+        # direction.
+        # {
+          # "vertices": [[3, 2, 1], ...]
+          # "faces":  [[0, 1, 2, 3], ...]
+        # }
+        # """
+    # )
+    # band_gap = SubSection(sub_section=BandGap.m_def, repeats=False)
+    # band_gap_spin_up = SubSection(sub_section=BandGap.m_def, repeats=False)
+    # band_gap_spin_down = SubSection(sub_section=BandGap.m_def, repeats=False)
+    # segments = SubSection(sub_section=BandSegment.m_def, repeats=True)
+
+    # is_standard_path = Quantity(
+        # type=bool,
+        # description="""
+        # Boolean indicating whether the path follows the standard path for this
+        # cell. The AFLOW standard by Setyawan and Curtarolo is used
+        # (https://doi.org/10.1016/j.commatsci.2010.05.010).
+        # """
+    # )
+
+
+# class ElectronicDOS(MSection):
+    # m_def = Section(
+        # a_flask=dict(skip_none=True),
+        # a_elastic=dict(type=InnerDoc),
+        # description="""
+        # Stores the electronic density of states (DOS).
+        # """
+    # )
+    # scc_index = Quantity(
+        # type=int,
+        # description="""
+        # Index of the single configuration calculation that contains the density
+        # of states.
+        # """
+    # )
+    # fermi_level = Quantity(
+        # type=np.dtype(np.float64),
+        # unit=units.J,
+        # description="""
+        # Fermi level reported for the density of states.
+        # """
+    # )
+    # energies = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=["1..*"],
+        # unit=units.J,
+        # description="""
+        # Array containing the set of discrete energy values with respect to the
+        # top of the valence band for the density of states (DOS).
+        # """
+    # )
+    # values = Quantity(
+        # type=np.dtype(np.float64),
+        # shape=["1..2", "1..*"],
+        # unit=units.J**(-1),
+        # description="""
+        # Values (number of states for a given energy, the set of discrete energy
+        # values is given in dos_energies) of density of states. The values are
+        # given as states/energy.
+        # """
+    # )
 
 
-class BandSegment(MSection):
-    m_def = Section(
-        a_flask=dict(skip_none=True),
-        a_elastic=dict(type=InnerDoc),
-        description="""
-        Represents a continuous path segment starting from a specific k-point
-        and ending in another.
-        """
-    )
-    energies = Quantity(
-        type=np.dtype(np.float64),
-        shape=["1..2", "1..*", "1..*"],
-        unit=units.m**(-1),
-        description="""
-        The energies of the bands as a 3D array with size [n_spin_channels,
-        n_bands, n_k_points]. By default the spin down channel is given first
-        and the spin up channel is second.
-        """
-    )
-    k_points = Quantity(
-        type=np.dtype(np.float64),
-        shape=["1..*", 3],
-        unit=units.m**(-1),
-        description="""
-        Path of the band structure in reciprocal space.
-        """
-    )
-    labels = Quantity(
-        type=np.dtype('str'),
-        shape=[1],
-        description="""
-        The start end end labels for the k points in this segment.
-        """
-    )
-
-
-class ElectronicBandStructure(MSection):
+class Properties(MSection):
     m_def = Section(
         a_flask=dict(skip_none=True),
         a_elastic=dict(type=InnerDoc),
         description="""
-        Stores information related to an electronic band structure.
+        Contains a summary of the physical properties that have been calculated
+        in this entry.
         """
     )
-    scc_index = Quantity(
-        type=int,
-        description="""
-        Index of the single configuration calculation that contains the band
-        structure.
-        """
-    )
-    fermi_level = Quantity(
+    atomic_density = Quantity(
         type=float,
-        unit=units.J,
-        description="""
-        Fermi level reported for the band structure.
-        """
-    )
-    reciprocal_cell = Quantity(
-        type=np.dtype(np.float64),
-        shape=[3, 3],
-        unit=units.m**(-1),
-        description="""
-        The reciprocal cell within which the band structure is calculated.
-        """
-    )
-    brillouin_zone = Quantity(
-        type=str,
-        description="""
-        The Brillouin zone that corresponds to the reciprocal cell used in the
-        band calculation. The Brillouin Zone is defined as a list of vertices
-        and facets that are encoded with JSON. The vertices are 3D points in
-        the reciprocal space, and facets are determined by a chain of vertice
-        indices, with a right-hand ordering determining the surface normal
-        direction.
-        {
-          "vertices": [[3, 2, 1], ...]
-          "faces":  [[0, 1, 2, 3], ...]
-        }
-        """
-    )
-    band_gap = SubSection(sub_section=BandGap.m_def, repeats=False)
-    band_gap_spin_up = SubSection(sub_section=BandGap.m_def, repeats=False)
-    band_gap_spin_down = SubSection(sub_section=BandGap.m_def, repeats=False)
-    segments = SubSection(sub_section=BandSegment.m_def, repeats=True)
-
-    is_standard_path = Quantity(
-        type=bool,
-        description="""
-        Boolean indicating whether the path follows the standard path for this
-        cell. The AFLOW standard by Setyawan and Curtarolo is used
-        (https://doi.org/10.1016/j.commatsci.2010.05.010).
-        """
-    )
-
-
-class ElectronicDOS(MSection):
-    m_def = Section(
-        a_flask=dict(skip_none=True),
-        a_elastic=dict(type=InnerDoc),
-        description="""
-        Stores the electronic density of states (DOS).
-        """
-    )
-    scc_index = Quantity(
-        type=int,
+        unit=units.m**(-3),
         description="""
-        Index of the single configuration calculation that contains the density
-        of states.
+        Atomic density of the material (atoms/volume)."
         """
     )
-    fermi_level = Quantity(
-        type=np.dtype(np.float64),
-        unit=units.J,
+    mass_density = Quantity(
+        type=float,
+        unit=units.kg / units.m**3,
         description="""
-        Fermi level reported for the density of states.
+        Mass density of the material.
         """
     )
     energies = Quantity(
-        type=np.dtype(np.float64),
-        shape=["1..*"],
-        unit=units.J,
-        description="""
-        Array containing the set of discrete energy values with respect to the
-        top of the valence band for the density of states (DOS).
-        """
-    )
-    values = Quantity(
-        type=np.dtype(np.float64),
-        shape=["1..2", "1..*"],
-        unit=units.J**(-1),
+        type=str,
         description="""
-        Values (number of states for a given energy, the set of discrete energy
-        values is given in dos_energies) of density of states. The values are
-        given as states/energy.
+        Code dependent energy values, corrected to be per formula unit.
         """
     )
-
-
-class Properties(MSection):
-    m_def = Section(
-        a_flask=dict(skip_none=True),
-        a_elastic=dict(type=InnerDoc),
+    # electronic_band_structure = SubSection(sub_section=ElectronicBandStructure.m_def, repeats=False)
+    # electronic_dos = SubSection(sub_section=ElectronicDOS.m_def, repeats=False)
+    electronic_band_structure = Quantity(
+        type=Reference(SectionProxy('section_k_band')),
+        shape=[],
         description="""
-        Contains derived physical properties that are specific to the NOMAD
-        Encyclopedia.
+        Reference to an electronic band structure.
         """
     )
-    atomic_density = Quantity(
-        type=float,
-        unit=units.m**(-3),
+    electronic_dos = Quantity(
+        type=Reference(SectionProxy('section_dos')),
+        shape=[],
         description="""
-        Atomic density of the material (atoms/volume)."
+        Reference to an electronic density of states.
         """
     )
-    mass_density = Quantity(
-        type=float,
-        unit=units.kg / units.m**3,
+    phonon_band_structure = Quantity(
+        type=Reference(SectionProxy('section_k_band')),
+        shape=[],
         description="""
-        Mass density of the material.
+        Reference to a phonon band structure.
         """
     )
-    energies = Quantity(
-        type=str,
+    phonon_dos = Quantity(
+        type=Reference(SectionProxy('section_dos')),
+        shape=[],
         description="""
-        Code dependent energy values, corrected to be per formula unit.
+        Reference to a phonon density of states.
         """
     )
-    electronic_band_structure = SubSection(sub_section=ElectronicBandStructure.m_def, repeats=False)
-    electronic_dos = SubSection(sub_section=ElectronicDOS.m_def, repeats=False)
 
 
 class section_encyclopedia(MSection):