diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 0000000..72ef5f5
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,29 @@
+cff-version: 1.2.0 
+message: "If you use this software, please cite it as below."
+authors:
+- family-names: "Lew"
+  given-names: "Ethan"
+  orcid: "https://orcid.org/0000-0002-6509-6846"
+- family-names: "Hekal"
+  given-names: "Abdelrahman"
+  orcid: "https://orcid.org/0009-0008-9685-0558"
+- family-names: "Potomkin"
+  given-names: "Kostiantyn"
+  orcid: "https://orcid.org/0000-0002-4726-8931"
+- family-names: "Kochdumper"
+  given-names: "Niklas"
+  orcid: "https://orcid.org/0000-0001-6017-7623"
+- family-names: "Hencey"
+  given-names: "Brandon"
+  orcid: "https://orcid.org/0000-0001-9240-7999"
+- family-names: "Bak"
+  given-names: "Stanley"
+  orcid: "https://orcid.org/0000-0003-4947-9553"
+- family-names: "Bogomolov"
+  given-names: "Sergiy"
+  orcid: "https://orcid.org/0000-0002-0686-0365"
+title: "AutoKoopman: A Toolbox for Automated System Identification via Koopman Operator Linearization"
+version: 0.30.0 
+doi: 10.1007/978-3-031-45332-8_12
+date-released: 2023-10-19
+url: "https://github.com/EthanJamesLew/AutoKoopman"
diff --git a/autokoopman/autokoopman.py b/autokoopman/autokoopman.py
index 5f8da32..47a8855 100644
--- a/autokoopman/autokoopman.py
+++ b/autokoopman/autokoopman.py
@@ -75,7 +75,7 @@ def get_parameter_space(obs_type, threshold_range, rank):
         return ParameterSpace(
             "koopman-polynomial",
             [
-                DiscreteParameter("degree", 1, 5),
+                DiscreteParameter("degree", 1, 3),
                 DiscreteParameter("rank", *rank),
             ],
         )
@@ -133,7 +133,7 @@ def auto_koopman(
     training_data: Union[TrajectoriesData, Sequence[np.ndarray]],
     inputs_training_data: Optional[Sequence[np.ndarray]] = None,
     sampling_period: Optional[float] = None,
-    normalize: bool = True,
+    normalize: bool = False,
     opt: Union[str, HyperparameterTuner] = "monte-carlo",
     max_opt_iter: int = 100,
     max_epochs: int = 500,
diff --git a/autokoopman/core/system.py b/autokoopman/core/system.py
index 3978ef8..b88902b 100644
--- a/autokoopman/core/system.py
+++ b/autokoopman/core/system.py
@@ -398,6 +398,10 @@ def evolv_func_scale(t, x, i):
     def A(self):
         return self._A
 
+    @property
+    def koopman_operator(self):
+        return self._A
+
     @property
     def B(self):
         return self._B
diff --git a/environment.yml b/environment.yml
index 1477062..688dcce 100644
--- a/environment.yml
+++ b/environment.yml
@@ -1,48 +1,48 @@
 name: autokoopman
 channels:
+  - conda-forge
   - defaults
 dependencies:
-  - _libgcc_mutex=0.1=main
-  - _openmp_mutex=5.1=1_gnu
-  - blas=1.0=mkl
-  - ca-certificates=2023.01.10=h06a4308_0
-  - certifi=2022.12.7=py39h06a4308_0
-  - cffi=1.15.1=py39h5eee18b_3
-  - flit-core=3.6.0=pyhd3eb1b0_0
-  - future=0.18.2=py39h06a4308_1
-  - intel-openmp=2021.4.0=h06a4308_3561
-  - ld_impl_linux-64=2.38=h1181459_1
-  - libffi=3.4.2=h6a678d5_6
-  - libgcc-ng=11.2.0=h1234567_1
-  - libgomp=11.2.0=h1234567_1
-  - libprotobuf=3.20.3=he621ea3_0
-  - libstdcxx-ng=11.2.0=h1234567_1
-  - mkl=2021.4.0=h06a4308_640
-  - mkl-service=2.4.0=py39h7f8727e_0
-  - mkl_fft=1.3.1=py39hd3c417c_0
-  - mkl_random=1.2.2=py39h51133e4_0
-  - ncurses=6.4=h6a678d5_0
-  - ninja=1.10.2=h06a4308_5
-  - ninja-base=1.10.2=hd09550d_5
-  - numpy-base=1.23.5=py39h31eccc5_0
-  - openssl=1.1.1s=h7f8727e_0
-  - pip=22.3.1=py39h06a4308_0
-  - pycparser=2.21=pyhd3eb1b0_0
-  - python=3.9.16=h7a1cb2a_0
-  - pytorch=1.12.1=cpu_py39hb1f1ab4_1
-  - pyyaml=6.0=py39h5eee18b_1
-  - readline=8.2=h5eee18b_0
-  - setuptools=65.6.3=py39h06a4308_0
-  - six=1.16.0=pyhd3eb1b0_1
-  - sqlite=3.40.1=h5082296_0
-  - tk=8.6.12=h1ccaba5_0
-  - typing-extensions=4.4.0=py39h06a4308_0
-  - typing_extensions=4.4.0=py39h06a4308_0
-  - tzdata=2022g=h04d1e81_0
-  - wheel=0.37.1=pyhd3eb1b0_0
-  - xz=5.2.10=h5eee18b_1
-  - yaml=0.2.5=h7b6447c_0
-  - zlib=1.2.13=h5eee18b_0
+  - blas=1.0
+  - ca-certificates=2023.08.22
+  - cffi=1.15.1
+  - filelock=3.9.0
+  - gmp=6.2.1
+  - gmpy2=2.1.2
+  - jinja2=3.1.2
+  - libcxx=16.0.6
+  - libffi=3.3
+  - libopenblas=0.3.21
+  - libprotobuf=3.20.3
+  - libsqlite=3.43.2
+  - libuv=1.44.2
+  - libzlib=1.2.13
+  - llvm-openmp=14.0.6
+  - markupsafe=2.1.1
+  - mpc=1.1.0
+  - mpfr=4.0.2
+  - ncurses=6.4
+  - networkx=3.1
+  - ninja=1.10.2
+  - ninja-base=1.10.2
+  - numpy-base=1.26.0
+  - openssl=1.1.1w
+  - pip=23.3.1
+  - pycparser=2.21
+  - python=3.9.0
+  - pytorch=2.0.1
+  - readline=8.2
+  - setuptools=68.2.2
+  - sleef=3.5.1
+  - sqlite=3.43.2
+  - sympy=1.11.1
+  - tk=8.6.13
+  - typing-extensions=4.7.1
+  - typing_extensions=4.7.1
+  - tzdata=2023c
+  - wheel=0.41.2
+  - xz=5.2.6
+  - zlib=1.2.13
   - pip:
       - attrs==22.2.0
       - cmake==3.25.2
@@ -60,7 +60,7 @@ dependencies:
       - kiwisolver==1.4.4
       - matplotlib==3.6.3
       - mpmath==1.2.1
-      - numpy==1.23.1
+      - numpy==1.21.0
       - packaging==23.0
       - pandas==1.5.3
       - paramz==0.9.5
@@ -73,6 +73,7 @@ dependencies:
       - pytz==2022.7.1
       - scikit-learn==1.0.2
       - scipy==1.10.0
-      - sympy==1.11.1
+      - six==1.16.0
       - threadpoolctl==3.1.0
+      - tomli==2.0.1
       - tqdm==4.64.1