diff --git a/.travis.yml b/.travis.yml
index cc9cac1..20b3be7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,13 +1,21 @@
 language: python
+
+dist: xenial
+
 python:
-- 3.7-dev
+- "3.7"
+- "3.8-dev"
+
 install:
 - pip install pipenv
 - pipenv install --dev
+
 script:
 - py.test --cov-report term --cov pystructs tests
+
 after_success:
 - codecov
+
 deploy:
   provider: pypi
   user: moreal
diff --git a/examples/__init__.py b/examples/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/examples/stun_message.py b/examples/stun_message.py
new file mode 100644
index 0000000..1f53fe3
--- /dev/null
+++ b/examples/stun_message.py
@@ -0,0 +1,26 @@
+from typing import List
+
+from pystructs import fields
+
+
+class Attribute(fields.Struct):
+    type = fields.BytesField(size=1)
+    length = fields.Int32Field(byteorder='big')
+    value = fields.VariableBytesField(related_field='length')
+
+
+class StunMessage(fields.Struct):
+    type = fields.BytesField(size=1)
+    length = fields.Int32Field(byteorder='little')
+    attributes: List[Attribute] = fields.MultipleField(count='length', field=Attribute())
+
+
+message = StunMessage(
+    b'\x09\x00\x00\x00\x02'
+    b'\x01\x00\x00\x00\x03\x12\x34\x56'
+    b'\x02\x00\x00\x00\x03\x12\x34\x56')
+
+message.initialize()
+
+print(message.attributes[0].type)
+print(message.attributes[1].type)
diff --git a/pystructs/fields/bytes.py b/pystructs/fields/bytes.py
index 8c19232..75c49eb 100644
--- a/pystructs/fields/bytes.py
+++ b/pystructs/fields/bytes.py
@@ -1,6 +1,19 @@
+from __future__ import annotations
+
+from typing import Optional
+
 from pystructs.fields.field import Field
 
 
 class BytesField(Field):
+    bytes: Optional[bytes]  # bytes of root field
+
+    def __init__(self, size: int):
+        super().__init__(size)
+        self.bytes = None
+
+    def initialize(self, root: BytesField):
+        self.bytes = root.bytes
+
     def fetch(self) -> bytes:
-        return self.parent.bytes[self.offset:self.offset+self.size]
+        return self.bytes[self.offset:self.offset+self.size]
diff --git a/pystructs/fields/field.py b/pystructs/fields/field.py
index 92ed8e9..8a8bbf1 100644
--- a/pystructs/fields/field.py
+++ b/pystructs/fields/field.py
@@ -1,13 +1,43 @@
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Optional
+
+if TYPE_CHECKING:
+    from pystructs.fields import Struct
+
+
 class Field:
-    parent = None
-    offset = 0
+    parent: Struct = None
+
+    __prev: Optional[Field]
+    __size: int
 
     def __init__(self, size: int):
-        self.size = size
+        self.__size = size
+        self.__prev = None
 
     def fetch(self):
         raise NotImplementedError()
 
+    def initialize(self, root: Field):
+        raise NotImplementedError()
+
     @property
     def is_root(self) -> bool:
-        return self.parent is None
+        return self.__prev is None
+
+    @property
+    def prev(self) -> Field:
+        return self.__prev
+
+    @prev.setter
+    def prev(self, field):
+        self.__prev = field
+
+    @property
+    def offset(self) -> int:
+        return 0 if self.is_root else self.__prev.offset + self.__prev.size
+
+    @property
+    def size(self) -> int:
+        return self.__size
diff --git a/pystructs/fields/integer.py b/pystructs/fields/integer.py
index 791b6e4..54215a1 100644
--- a/pystructs/fields/integer.py
+++ b/pystructs/fields/integer.py
@@ -2,9 +2,8 @@ from pystructs.fields.bytes import BytesField
 
 
 class IntField(BytesField):
-    size = 4
-
-    def __init__(self, byteorder='little'):
+    def __init__(self, size: int, byteorder='little'):
+        super().__init__(size)
         self.byteorder = byteorder
 
     def fetch(self) -> int:
@@ -12,8 +11,10 @@ class IntField(BytesField):
 
 
 class Int32Field(IntField):
-    size = 4
+    def __init__(self, **kwargs):
+        super().__init__(4, **kwargs)
 
 
 class Int64Field(IntField):
-    size = 8
+    def __init__(self, **kwargs):
+        super().__init__(8, **kwargs)
diff --git a/pystructs/fields/multiple.py b/pystructs/fields/multiple.py
index 51cde35..41b65a4 100644
--- a/pystructs/fields/multiple.py
+++ b/pystructs/fields/multiple.py
@@ -1,14 +1,15 @@
-import copy
-from copy import copy, deepcopy
+from copy import deepcopy
 from typing import Union, AnyStr
 
 from pystructs import utils
-from pystructs.fields import Field, VariableStruct
+from pystructs.fields import Field, Struct
 from pystructs.interfaces import IVariable
 
 
-class MultipleField(VariableStruct, IVariable):
+class MultipleField(Struct, IVariable):
     def __init__(self, count: Union[int, AnyStr], field: Field):
+        super().__init__()
+
         if isinstance(count, int):
             self.count: int = count
         elif isinstance(count, str):
@@ -19,14 +20,16 @@ class MultipleField(VariableStruct, IVariable):
 
         self.field = field
 
-    def _initialize(self):
-        super()._initialize_parent_of_fields()
+    def initialize(self, root: Struct = None):
+        if root is None:
+            raise TypeError("MultipleField can't be root field")
 
         if self.count is -1:
             self.count = utils.deepattr(self.parent, self.related_field)
 
         self.fields = dict((i, deepcopy(self.field)) for i in range(self.count))
-        self._calculate_offset_and_size()
+
+        super().initialize(root)
 
     def fetch(self) -> list:
         return list(self.fields.values())
diff --git a/pystructs/fields/struct.py b/pystructs/fields/struct.py
index bcdf194..f1380c2 100644
--- a/pystructs/fields/struct.py
+++ b/pystructs/fields/struct.py
@@ -1,93 +1,75 @@
+from __future__ import annotations
 from copy import deepcopy
 from typing import Dict, AnyStr, Union
 
 from pystructs import utils
-from pystructs.fields import IntField, BytesField
-from pystructs.fields.field import Field
-from pystructs.fields.variable import VariableBytesField
-from pystructs.interfaces import IConstant, IVariable
-from pystructs.utils import deepattr
+from pystructs.fields import BytesField, Field
 
 __all__ = [
-    'ConstantStruct',
-    'VariableStruct',
+    'Struct',
 ]
 
 
-class ConstantStructMetaclass(type):
+class StructMetaclass(type):
     def __new__(mcs, name, bases, attrs: dict):
         attrs = utils.filter_fields(attrs)
         attrs = utils.delete_fields(attrs)
 
-        offset = 0
-
-        for name, field in attrs['fields'].items():
-            if isinstance(field, IVariable):
-                raise TypeError("ConstantStruct can't have `IVariable` Field")
-
-            field.offset = offset
-            offset += field.size
-
-        attrs['size'] = offset
-
         return super().__new__(mcs, name, bases, attrs)
 
 
-class VariableStructMetaclass(type):
-    def __new__(mcs, name, bases, attrs: dict):
-        attrs = utils.filter_fields(attrs)
-        attrs = utils.delete_fields(attrs)
-
-        return super().__new__(mcs, name, bases, attrs)
-
-
-class Struct(BytesField):
+class Struct(BytesField, metaclass=StructMetaclass):
     fields: Dict[Union[AnyStr, int], Field]
 
-    @property
-    def bytes(self):
-        return self._bytes
-
     def __init__(self, _bytes: bytes = b''):
-        self._bytes = _bytes
-        self._initialize()
+        super().__init__(0)
+        self.bytes = _bytes
 
-    def fetch(self):
-        self._bytes = self.parent.bytes[self.offset:self.offset+self.size]
+    def fetch(self) -> Struct:
         return self
 
     def __getattr__(self, item):
         try:
+            if item not in self.fields:
+                return getattr(super(), item)
             return self.fields[item].fetch()
         except KeyError:
             raise AttributeError(item)
 
-    def _initialize(self):
-        self.fields = deepcopy(self.fields)
-        self._initialize_parent_of_fields()
+    def initialize(self, root: Struct = None):
+        if root is None:
+            root = self
 
-    def _initialize_parent_of_fields(self):
-        for _, field in self.fields.items():
+        self.fields = deepcopy(self.fields)
+        for field in self.fields.values():
             field.parent = self
+            field.initialize(root)
 
+        self.__link_fields()
 
-class ConstantStruct(Struct, IConstant, metaclass=ConstantStructMetaclass):
-    pass
+    def __link_fields(self):
+        fields = list(self.fields.values())
+        fields_count = len(fields)
 
+        for index in range(fields_count - 1):
+            fields[index+1].prev = fields[index]
 
-class VariableStruct(Struct, IVariable, metaclass=VariableStructMetaclass):
-    def _initialize(self):
-        self._initialize_parent_of_fields()
-        self._calculate_offset_and_size()
+        if fields_count > 0:
+            fields[0].prev = VirtualStruct(self)
+
+    @property
+    def size(self) -> int:
+        return sum(map(lambda x: x.size, self.fields.values()))
 
-    def _calculate_offset_and_size(self):
-        offset = 0
 
-        for name, field in self.fields.items():
-            if isinstance(field, VariableStruct) and not field.is_root:
-                field._initialize()
+class VirtualStruct:
+    def __init__(self, struct: Struct):
+        self.__struct = struct
 
-            field.offset = offset
-            offset += field.size
+    @property
+    def offset(self) -> int:
+        return self.__struct.offset
 
-        self.size = offset
+    @property
+    def size(self) -> int:
+        return 0
diff --git a/pystructs/fields/variable.py b/pystructs/fields/variable.py
index ada4127..d30e552 100644
--- a/pystructs/fields/variable.py
+++ b/pystructs/fields/variable.py
@@ -1,13 +1,13 @@
-from functools import reduce
 from typing import AnyStr
 
-from pystructs.fields import BytesField, IntField, Field
+from pystructs.fields import BytesField
 from pystructs.interfaces import IVariable
 from pystructs.utils import deepattr
 
 
 class VariableBytesField(BytesField, IVariable):
     def __init__(self, related_field: AnyStr):
+        super().__init__(0)
         self.related_field = related_field
 
     @property

Fix wrong struct machanism
The implementation of `Field` used `object.__get__` to get that

It was effective when we use `ConstantStruct`

But, in `VariableStruct`, offsets and sizes aren't fixed so the instance needs to have different field instances
diff --git a/tests/fields/test_bytes.py b/tests/fields/test_bytes.py
index 75f4ca6..d1c42ec 100644
--- a/tests/fields/test_bytes.py
+++ b/tests/fields/test_bytes.py
@@ -1,9 +1,11 @@
 from pystructs import fields
 
 
-class CustomStruct(fields.ConstantStruct):
+class CustomStruct(fields.Struct):
     bytes_field = fields.BytesField(size=4)
 
 
 def test_bytes_field():
-    assert CustomStruct(b'1234').bytes_field == b'1234'
+    struct = CustomStruct(b'1234')
+    struct.initialize()
+    assert struct.bytes_field == b'1234'
diff --git a/tests/fields/test_field.py b/tests/fields/test_field.py
index fd297b5..d0ef074 100644
--- a/tests/fields/test_field.py
+++ b/tests/fields/test_field.py
@@ -3,22 +3,23 @@ import pytest
 from pystructs import fields
 
 
-class CustomStruct(fields.ConstantStruct):
-    first = fields.Field(2)
-    second = fields.Field(2)
-
-
-def test_field_will_raise_error():
+def test_field_initialize_will_raise_error():
     with pytest.raises(NotImplementedError):
+        class CustomStruct(fields.Struct):
+            field = fields.Field(size=0)
+
         struct = CustomStruct(b'')
-        struct.first
+        struct.initialize()
 
 
-def test_field_set_offset_automatically():
-    assert CustomStruct(b'').fields['first'].offset == 0
-    assert CustomStruct(b'').fields['second'].offset == 2
+def test_field_fetch_will_raise_error():
+    with pytest.raises(NotImplementedError):
+        field = fields.Field(size=2)
+        field.fetch()
+
 
+def test_field_import_struct_by_type_checking():
+    from pystructs.fields import field
 
-def test_field_size():
-    assert CustomStruct(b'').fields['first'].size == 2
-    assert CustomStruct(b'').fields['second'].size == 2
+    if field.TYPE_CHECKING:
+        assert getattr(field, 'Struct', None) is not None
diff --git a/tests/fields/test_integer.py b/tests/fields/test_integer.py
index df9f3e6..00b832e 100644
--- a/tests/fields/test_integer.py
+++ b/tests/fields/test_integer.py
@@ -2,32 +2,36 @@ from pystructs import fields
 
 
 def test_int32_field_little_byteorder():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         field = fields.Int32Field(byteorder='little')
 
     struct = CustomStruct(b'\x01\x00\x00\x00')
+    struct.initialize()
     assert struct.field == 1
 
 
 def test_int32_field_big_byteorder():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         field = fields.Int32Field(byteorder='big')
 
     struct = CustomStruct(b'\x00\x00\x00\x01')
+    struct.initialize()
     assert struct.field == 1
 
 
 def test_int64_field_little_byteorder():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         field = fields.Int64Field(byteorder='little')
 
     struct = CustomStruct(b'\x01\x00\x00\x00\x00\x00\x00\x00')
+    struct.initialize()
     assert struct.field == 1
 
 
 def test_int64_field_big_byteorder():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         field = fields.Int64Field(byteorder='big')
 
     struct = CustomStruct(b'\x00\x00\x00\x00\x00\x00\x00\x01')
+    struct.initialize()
     assert struct.field == 1
diff --git a/tests/fields/test_multiple.py b/tests/fields/test_multiple.py
index a02dc52..560eb5c 100644
--- a/tests/fields/test_multiple.py
+++ b/tests/fields/test_multiple.py
@@ -5,32 +5,37 @@ from pystructs.fields import Int32Field
 
 
 @pytest.fixture
-def constant_struct():
-    class CustomStruct(fields.VariableStruct):
-        multiple_field = fields.MultipleField(4, fields.Int32Field())
+def struct():
+    class CustomStruct(fields.Struct):
+        count = Int32Field(byteorder='big')
+        multiple_field = fields.MultipleField("count", fields.Int32Field())
 
-    return CustomStruct(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+    struct = CustomStruct(b'\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01')
 
+    return struct
 
-@pytest.fixture
-def variable_struct():
-    class CustomStruct(fields.VariableStruct):
-        count = Int32Field(byteorder='big')
-        multiple_field = fields.MultipleField("count", fields.Int32Field())
 
-    return CustomStruct(b'\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01')
+def test_multiple_field_set_size_automatically(struct):
+    struct.initialize()
+    assert struct.size == 20
 
 
-def test_multiple_field_set_size_automatically(constant_struct):
-    assert constant_struct.size == 16
+def test_multiple_field_returns_list(struct):
+    struct.initialize()
+    assert isinstance(struct.multiple_field, list)
 
 
-def test_multiple_field_returns_list(constant_struct):
-    assert isinstance(constant_struct.multiple_field, list)
+def test_multiple_field_can_be_variable(struct):
+    struct.initialize()
+    assert len(struct.multiple_field) == struct.count
 
 
-def test_multiple_field_can_be_variable(variable_struct):
-    print(variable_struct.multiple_field)
-    assert len(variable_struct.multiple_field) == variable_struct.count
+def test_multiple_field_constructor_arguments():
+    with pytest.raises(TypeError):
+        fields.MultipleField(3.14, fields.Int32Field())
 
 
+def test_multiple_field_cant_be_root():
+    with pytest.raises(TypeError):
+        field = fields.MultipleField(3, fields.Int32Field())
+        field.initialize()
diff --git a/tests/fields/test_string.py b/tests/fields/test_string.py
index c7d0e57..cd5a783 100644
--- a/tests/fields/test_string.py
+++ b/tests/fields/test_string.py
@@ -2,24 +2,27 @@ from pystructs import fields
 
 
 def test_string_utf8_encoding():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         string = fields.StringField(11, 'utf8')
 
     struct = CustomStruct(b'hello world')
+    struct.initialize()
     assert struct.string == 'hello world'
 
 
 def test_string_ascii_encoding():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         string = fields.StringField(11, 'ascii')
 
     struct = CustomStruct(b'hello world')
+    struct.initialize()
     assert struct.string == 'hello world'
 
 
 def test_string_euckr_encoding():
-    class CustomStruct(fields.ConstantStruct):
+    class CustomStruct(fields.Struct):
         string = fields.StringField(10, 'euc-kr')
 
     struct = CustomStruct(b'\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4')
+    struct.initialize()
     assert struct.string == '안녕하세요'
diff --git a/tests/fields/test_struct.py b/tests/fields/test_struct.py
index 2896767..5ee6cbd 100644
--- a/tests/fields/test_struct.py
+++ b/tests/fields/test_struct.py
@@ -1,20 +1,21 @@
 import pytest
 
-from pystructs.fields import (
-    ConstantStruct,
-    BytesField,
-    VariableStruct)
+from pystructs.fields import BytesField, Struct
 
 
 @pytest.fixture
 def outer_struct():
-    class InnerStruct(ConstantStruct):
-        first = BytesField(4)
+    class InnerStruct(Struct):
+        first = BytesField(size=4)
+        second = BytesField(size=4)
 
-    class OuterStruct(ConstantStruct):
+    class OuterStruct(Struct):
         inner_struct = InnerStruct()
 
-    return OuterStruct(b'1234')
+    outer_struct = OuterStruct(b'12345678')
+    outer_struct.initialize()
+
+    return outer_struct
 
 
 def test_struct_can_have_recursive_struct(outer_struct):
@@ -22,11 +23,15 @@ def test_struct_can_have_recursive_struct(outer_struct):
 
 
 def test_struct_has_size_by_fields(outer_struct):
-    assert outer_struct.inner_struct.size == 4
-    assert outer_struct.size == 4
+    assert outer_struct.inner_struct.size == 8
+    assert outer_struct.size == 8
+
+
+def test_struct_initialize_links_fields(outer_struct):
+    inner_struct = outer_struct.inner_struct
+    assert inner_struct.fields['second'].prev == inner_struct.fields['first']
 
 
-def test_constant_struct_can_have_only_constant_struct():
-    with pytest.raises(TypeError):
-        class Custom(ConstantStruct):
-            inner_struct = VariableStruct()
+def test_struct_getattr_raises_attribute_error(outer_struct):
+    with pytest.raises(AttributeError):
+        field = getattr(outer_struct, 'not_exists_field')
diff --git a/tests/fields/test_variable.py b/tests/fields/test_variable.py
index 10062eb..8fe98f8 100644
--- a/tests/fields/test_variable.py
+++ b/tests/fields/test_variable.py
@@ -1,12 +1,13 @@
-from pystructs.fields import Int32Field, ConstantStruct, VariableStruct
+from pystructs.fields import Int32Field, Struct
 from pystructs.fields.variable import VariableBytesField
 
 
 def test_variable_bytes_field_has_variable_size():
-    class CustomStruct(VariableStruct):
+    class CustomStruct(Struct):
         length = Int32Field(byteorder='big')
         data = VariableBytesField(related_field='length')
 
     struct = CustomStruct(b'\x00\x00\x00\x02\x12\x34')
+    struct.initialize()
 
     assert struct.data == b'\x12\x34'

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///croot/attrs_1668696182826/work
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1671697413597/work
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
-e git+https://github.com/moreal/pystructs.git@52df41c91df550df25a03221952a89a51e0d3beb#egg=pystructs
pytest==7.1.2
pytest-cov==4.1.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
zipp @ file:///croot/zipp_1672387121353/work

name: pystructs
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.2.7
      - pytest-cov==4.1.0
prefix: /opt/conda/envs/pystructs

tests/fields/test_bytes.py::test_bytes_field tests/fields/test_field.py::test_field_initialize_will_raise_error tests/fields/test_field.py::test_field_fetch_will_raise_error tests/fields/test_field.py::test_field_import_struct_by_type_checking tests/fields/test_integer.py::test_int32_field_little_byteorder tests/fields/test_integer.py::test_int32_field_big_byteorder tests/fields/test_integer.py::test_int64_field_little_byteorder tests/fields/test_integer.py::test_int64_field_big_byteorder tests/fields/test_multiple.py::test_multiple_field_set_size_automatically tests/fields/test_multiple.py::test_multiple_field_returns_list tests/fields/test_multiple.py::test_multiple_field_can_be_variable tests/fields/test_multiple.py::test_multiple_field_constructor_arguments tests/fields/test_multiple.py::test_multiple_field_cant_be_root tests/fields/test_string.py::test_string_utf8_encoding tests/fields/test_string.py::test_string_ascii_encoding tests/fields/test_string.py::test_string_euckr_encoding tests/fields/test_struct.py::test_struct_can_have_recursive_struct tests/fields/test_struct.py::test_struct_has_size_by_fields tests/fields/test_struct.py::test_struct_initialize_links_fields tests/fields/test_struct.py::test_struct_getattr_raises_attribute_error tests/fields/test_variable.py::test_variable_bytes_field_has_variable_size
pystructs/fields/struct.py pystructs/fields/bytes.py pystructs/fields/integer.py .travis.yml pystructs/fields/variable.py examples/__init__.py examples/stun_message.py pystructs/fields/field.py pystructs/fields/multiple.py
pystructs/fields/struct.py pystructs/fields/bytes.py pystructs/fields/integer.py .travis.yml pystructs/fields/variable.py examples/__init__.py examples/stun_message.py pystructs/fields/field.py pystructs/fields/multiple.py