diff --git a/Snapper/Snapper.py b/Snapper/Snapper.py
index 7306c09..56feaa3 100644
--- a/Snapper/Snapper.py
+++ b/Snapper/Snapper.py
@@ -1,3 +1,6 @@
+from ..Relationship.Variable import Variable
+
+
 class Snapper:
     def __init__(self):
         self.sensors = []
@@ -23,6 +26,16 @@ class Snapper:
         """
         self.dataBuffer[sensor.uuid] = data
 
+    def add_sensor(self, sensor):
+        """
+        This function adds a new sensor to the snapper module and generates a corresponding variable object.
+        :return:
+        """
+        self.sensors.append(sensor)
+        newVariable = Variable()
+        self.variables.append(newVariable)
+        self.routeMap[sensor.uuid] = newVariable.uuid
+
     def create_snapshot(self):
         """
         This function collects all available data and builds the newest snapshot of synchronized values.

Implement Generation of Variables from Sensors in Snapper
The snapper module must generate variable objects as needed from sensor objects supplied, rather than expect to be provided with the variables from outside the module.
diff --git a/Snapper/Snapper_test.py b/Snapper/Snapper_test.py
index 799a6e2..fbb2cb6 100644
--- a/Snapper/Snapper_test.py
+++ b/Snapper/Snapper_test.py
@@ -1,4 +1,5 @@
 from ..Sensor.Sensor import Sensor
+from ..Relationship.Variable import Variable
 from .Snapper import Snapper
 
 
@@ -15,7 +16,24 @@ def test_should_have_variables_field_as_empty_list_on_init():
 def test_should_receive_data_from_attached_sensor():
     snapper = Snapper()
     sensor = Sensor(snapper)
-    snapper.sensors.append(sensor)  # A little hacked, I know. This is a place-holder
+    snapper.add_sensor(sensor)
     sensor.Publish(2)
 
-    assert snapper.dataBuffer[sensor.uuid] is 2
\ No newline at end of file
+    assert snapper.dataBuffer[sensor.uuid] is 2
+
+
+def test_should_store_sensor():
+    snapper = Snapper()
+    sensor = Sensor(snapper)
+    snapper.add_sensor(sensor)
+
+    assert isinstance(snapper.sensors[0], Sensor)
+
+
+def test_should_generate_variable():
+    snapper = Snapper()
+    sensor = Sensor(snapper)
+    snapper.add_sensor(sensor)
+
+    assert isinstance(snapper.variables[0], Variable)
+

pip install -e .
parse_log_pytest
scipy numpy pytest
pytest
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/EliCDavis/AssociationEngine.git@941e395d804635ead728ce0c69156974b9c1d59c#egg=association_engine
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
numpy @ file:///croot/numpy_and_numpy_base_1736283260865/work/dist/numpy-2.0.2-cp39-cp39-linux_x86_64.whl#sha256=3387e3e62932fa288bc18e8f445ce19e998b418a65ed2064dd40a054f976a6c7
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
scipy @ file:///croot/scipy_1733756309941/work/dist/scipy-1.13.1-cp39-cp39-linux_x86_64.whl#sha256=3b247b926209f2d9f719ebae39faf3ff891b2596150ed8f8349adfc3eb19441c
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: AssociationEngine
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
  - blas=1.0=openblas
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_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
  - libgfortran-ng=11.2.0=h00389a5_1
  - libgfortran5=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libopenblas=0.3.21=h043d6bf_0
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - numpy=2.0.2=py39heeff2f4_0
  - numpy-base=2.0.2=py39h8a23956_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pybind11-abi=4=hd3eb1b0_1
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - scipy=1.13.1=py39heeff2f4_1
  - setuptools=72.1.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
prefix: /opt/conda/envs/AssociationEngine

Snapper/Snapper_test.py::test_should_receive_data_from_attached_sensor Snapper/Snapper_test.py::test_should_store_sensor Snapper/Snapper_test.py::test_should_generate_variable
Snapper/Snapper_test.py::test_should_have_sensors_field_as_empty_list_on_init Snapper/Snapper_test.py::test_should_have_variables_field_as_empty_list_on_init
Snapper/Snapper.py
Snapper/Snapper.py