Repository: mosdef-hub/foyer (language: python)

Issue:
Ambiguous SMARTS string for OPLS methoxy carbon?
I am getting an error where multiple types---opls_182 and opls_468---are found for the same atom. (Sorry, I don't have a minimum reproducer structure right now!). I looked at the forcefield file, and I was wondering if the SMARTS string for opls_468 is correct:

https://github.com/mosdef-hub/foyer/blob/17576a2c74c2c643c7d6bf47a84cc0977ea35cdb/foyer/forcefields/xml/oplsaa.xml#L475

If this type is the carbon on a methoxy group as indicated in the description, it seems like it should have three hydrogens
```
[C;X4]([O;%opls_467])(H)(H)H
```
and not any 3 additional connections? However, I'm not 100% clear on this atom type.


Discussion / hints:
Hi @mphoward, thank for spotting this! We agree that the SMARTS string for this methoxy carbon is not specific enough. We will have a PR to update the SMARTS string.

Fix patch:
diff --git a/foyer/forcefields/xml/CHANGELOG.md b/foyer/forcefields/xml/CHANGELOG.md
index 279a7e07..6b819a4e 100644
--- a/foyer/forcefields/xml/CHANGELOG.md
+++ b/foyer/forcefields/xml/CHANGELOG.md
@@ -4,6 +4,25 @@
 
 v0.0.1 - April 15, 2021
  - started versioning of forcefield xmls
+v0.0.2 - June 24, 2021
+ - update SMARTS string for:
+    -   opls_182 (from `[C;X4]([O;%opls_180])(H)(H)` to `[C;X4]([O;%opls_180])(H)(H)C`)
+    -   opls_282(from `HC[C;%opls_277,%opls_280]` to `HC[C;%opls_277,%opls_280,%opls_465;!%opls_267]`)
+    -   opls_468 (from `[C;X4]([O;%opls_467])(H)(H)` to `[C;X4]([O;%opls_467])(H)(H)H`)
+    -   opls_469 (from `H[C;%opls_468]` to `H[C;%opls_468,%opls_490]`)
+    -   opls_490 (`[C;X4]([O;%opls_467])(H)(H)C`)
+
+ - update overrides for:
+    -   opls_279 (from `"opls_144"` to `"opls_185, opls_144"`)
+    -   opls_465 (from `""` to `"opls_277"`)
+    -   opls_465 (from `""` to `"opls_278"`)
+
+  - update references
+    - opls_465 (from `"10.1021/ja9539195"` to `"10.1002/jcc.1092"`)
+    - opls_466 (from `"10.1021/ja9539195"` to `"10.1002/jcc.1092"`)
+    - opls_467 (from `"10.1021/ja9539195"` to `"10.1002/jcc.1092"`)
+    - opls_468 (from `"10.1021/ja9539195"` to `"10.1002/jcc.1092"`)
+    - opls_469 (from `"10.1021/ja9539195"` to `"10.1002/jcc.1092"`)
 
 ----
 ## Trappe-UA
diff --git a/foyer/forcefields/xml/oplsaa.xml b/foyer/forcefields/xml/oplsaa.xml
index 6c757215..90980d00 100644
--- a/foyer/forcefields/xml/oplsaa.xml
+++ b/foyer/forcefields/xml/oplsaa.xml
@@ -3,7 +3,8 @@
      are imported from the gromacs atomtypes file at
      https://github.com/gromacs/gromacs/blob/aa66efd3179a671aace62b827c54aadc3d89c1ee/share/top/oplsaa.ff/atomtypes.atp
 -->
-<ForceField name="OPLS-AA" version="0.0.1" combining_rule="geometric">
+<ForceField name="OPLS-AA" version="0.0.2" combining_rule="geometric">
+
  <AtomTypes>
   <Type name="opls_001" class="opls_001" element="C" mass="12.011"/>
   <Type name="opls_002" class="opls_002" element="O" mass="15.9994"/>
@@ -183,7 +184,7 @@
   <Type name="opls_179" class="opls_179" element="O" mass="15.9994"/>
   <Type name="opls_180" class="OS" element="O" mass="15.9994"  def="[O;X2](C)C" desc="O, dialkyl ether" doi="10.1021/ja9621760"/>
   <Type name="opls_181" class="CT" element="C" mass="12.01100" def="[C;X4]([O;%opls_180])(H)(H)H" desc="C(H3OR), methyl ether" overrides="opls_182" doi="10.1021/ja9621760"/>
-  <Type name="opls_182" class="CT" element="C" mass="12.01100" def="[C;X4]([O;%opls_180])(H)(H)" desc="C(H2OR), methyl ether" doi="10.1021/ja9621760"/>
+  <Type name="opls_182" class="CT" element="C" mass="12.01100" def="[C;X4]([O;%opls_180])(H)(H)C" desc="C(H2OR), methyl ether" doi="10.1021/ja9621760"/>
   <Type name="opls_183" class="CT" element="C" mass="12.011" def="[C;X4]([O;%opls_180])(C)(C)H" desc = "Central Carbon in Isopropyl group attached to Oxygen in ether" doi="10.1021/ja9621760"/>
   <Type name="opls_184" class="CT" element="C" mass="12.011" def="[C;X4]([O;%opls_180])(C)(C)(C)" desc = "Central Carbon in t-butyl group attached to Oxygen in ether" doi="10.1021/ja9621760"/>
   <Type name="opls_185" class="HC" element="C" mass="1.00800"   def="HC[O;%opls_180]" desc="H(COR), alpha H ether" overrides="opls_140" doi="10.1021/ja9621760"/>
@@ -283,10 +284,10 @@
   <Type name="opls_276" class="opls_276" element="C" mass="12.011"/>
   <Type name="opls_277" class="C_2" element="C" mass="12.01100" def="[C;X3]([O;X1])H" desc="C in aldehyde" doi="10.1021/ja9621760"/>
   <Type name="opls_278" class="O_2" element="O" mass="15.9994"  def="[O;X1][C;%opls_277]" desc="O in aldehyde" doi="10.1021/ja9621760"/>
-  <Type name="opls_279" class="HC"  element="H" mass="1.00800"  def="H[C;X3][O;X1]" desc="H-alpha in aldehyde and formamide" overrides="opls_144" doi="10.1021/ja9621760"/>
+  <Type name="opls_279" class="HC"  element="H" mass="1.00800"  def="H[C;X3][O;X1]" desc="H-alpha in aldehyde and formamide" overrides="opls_185, opls_144" doi="10.1021/ja9621760"/>
   <Type name="opls_280" class="C_2" element="C" mass="12.01100" def="[C;X3]([O;X1])(C)C" desc="C in ketone" doi="10.1021/ja9621760"/>
   <Type name="opls_281" class="O_2" element="O" mass="15.9994"  def="[O;X1]([C;%opls_280])" desc="O in ketone" doi="10.1021/ja9621760"/>
-  <Type name="opls_282" class="HC"  element="H" mass="1.00800"  def="HC[C;%opls_277,C;%opls_280]" desc="H on C-alpha in ketone and aldehyde" overrides="opls_140,opls_144" doi="10.1021/ja9621760"/>
+  <Type name="opls_282" class="HC"  element="H" mass="1.00800"  def="HC[C;%opls_277,%opls_280,%opls_465;!%opls_267]" desc="H on C-alpha in ketone and aldehyde" overrides="opls_140,opls_144" doi="10.1021/ja9621760"/>
   <Type name="opls_283" class="opls_283" element="C" mass="12.011"/>
   <Type name="opls_284" class="opls_284" element="C" mass="12.011"/>
   <Type name="opls_285" class="opls_285" element="C" mass="12.011"/>
@@ -469,11 +470,11 @@
   <Type name="opls_461" class="opls_461" element="C" mass="12.011"/>
   <Type name="opls_462" class="opls_462" element="H" mass="1.008"/>
   <Type name="opls_463" class="opls_463" element="C" mass="12.011"/>
-  <Type name="opls_465" class="C_2" element="C" mass="12.011" def="[C;X3]([O;X1])([O;X2])" desc="C in C=O in ester" doi="10.1021/ja9539195"/>
-  <Type name="opls_466" class="O_2" element="O" mass="15.9994" def="[O;X1]([C;%opls_465]([O;%opls_467]))" desc="O in C=O in ester" doi="10.1021/ja9539195"/>
-  <Type name="opls_467" class="OS" element="O" mass="15.9994" def="[O;X2]([C;%opls_465])([!H])" overrides='opls_180' desc="O connected to R of O=C-O-R in esters" doi="10.1021/ja9539195"/>
-  <Type name="opls_468" class="CT" element="C" mass="12.011" def="[C;X4]([O;%opls_467])" overrides='opls_181' desc="methoxy C in esters" doi="10.1021/ja9539195"/>
-  <Type name="opls_469" class="HC" element="H" mass="1.008" def="H[C;%opls_468]" overrides='opls_185' desc="methoxy Hs in esters" doi="10.1021/ja9539195"/>
+  <Type name="opls_465" class="C_2" element="C" mass="12.011" def="[C;X3]([O;X1])([O;X2])" overrides="opls_277" desc="C in C=O in ester" doi="10.1002/jcc.1092"/>
+  <Type name="opls_466" class="O_2" element="O" mass="15.9994" def="[O;X1]([C;%opls_465]([O;%opls_467]))" overrides="opls_278" desc="O in C=O in ester" doi="10.1002/jcc.1092"/>
+  <Type name="opls_467" class="OS" element="O" mass="15.9994" def="[O;X2]([C;%opls_465])([!H])" overrides='opls_180' desc="O connected to R of O=C-O-R in esters" doi="10.1002/jcc.1092"/>
+  <Type name="opls_468" class="CT" element="C" mass="12.011" def="[C;X4]([O;%opls_467])(H)(H)H" overrides='opls_181' desc="methoxy C in esters" doi="10.1002/jcc.1092"/>
+  <Type name="opls_469" class="HC" element="H" mass="1.008" def="H[C;%opls_468,%opls_490]" overrides='opls_185' desc="methoxy Hs in esters; alpha-alkoxy hydrogen" doi="10.1002/jcc.1092"/>
   <Type name="opls_470" class="opls_470" element="C" mass="12.011"/>
   <Type name="opls_471" class="opls_471" element="C" mass="12.011"/>
   <Type name="opls_472" class="opls_472" element="C" mass="12.011"/>
@@ -493,7 +494,7 @@
   <Type name="opls_486" class="opls_486" element="C" mass="12.011"/>
   <Type name="opls_487" class="opls_487" element="H" mass="1.008"/>
   <Type name="opls_488" class="opls_488" element="C" mass="12.011"/>
-  <Type name="opls_490" class="opls_490" element="C" mass="12.011"/>
+  <Type name="opls_490" class="CT" element="C" mass="12.011" def="[C;X4]([O;%opls_467])(H)(H)C" overrides="opls_182" desc="ethoxy carbon; C(H2OS) ethyl ester" doi="10.1002/jcc.1092"/>
   <Type name="opls_491" class="opls_491" element="C" mass="12.011"/>
   <Type name="opls_492" class="opls_492" element="C" mass="12.011"/>
   <Type name="opls_493" class="opls_493" element="S" mass="32.06"/>
diff --git a/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.gro b/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.gro
new file mode 100644
index 00000000..f6cfbb37
--- /dev/null
+++ b/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.gro
@@ -0,0 +1,23 @@
+GROningen MAchine for Chemical Simulation
+   20
+    1RES      C    1  -0.408   0.005  -0.058
+    1RES      C    2  -0.274   0.018   0.005
+    1RES      O    3  -0.256   0.101   0.098
+    1RES      O    4  -0.170  -0.066  -0.036
+    1RES      C    5  -0.037  -0.059   0.017
+    1RES      C    6   0.038   0.060  -0.041
+    1RES      O    7   0.170   0.067   0.012
+    1RES      C    8   0.274  -0.016  -0.030
+    1RES      O    9   0.256  -0.102  -0.121
+    1RES      C   10   0.407  -0.006   0.036
+    1RES      H   11  -0.456   0.105  -0.067
+    1RES      H   12  -0.398  -0.039  -0.160
+    1RES      H   13  -0.472  -0.061   0.004
+    1RES      H   14   0.016  -0.153  -0.010
+    1RES      H   15  -0.041  -0.053   0.128
+    1RES      H   16   0.041   0.054  -0.152
+    1RES      H   17  -0.016   0.154  -0.014
+    1RES      H   18   0.416  -0.085   0.114
+    1RES      H   19   0.488  -0.019  -0.039
+    1RES      H   20   0.419   0.094   0.084
+   1.46001   0.80676   0.78808
diff --git a/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.top b/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.top
new file mode 100644
index 00000000..a1ae63dd
--- /dev/null
+++ b/foyer/opls_validation/2-acetyloxyethyl-acetate/2-acetyloxyethyl-acetate.top
@@ -0,0 +1,191 @@
+;
+;   File 2-acetyloxyethyl-acetate.top  was generated
+;   By user: quachcd (501)
+;   On host:Cos-MacBook-Pro.local
+;   At date:Tue. June  2 15:49:03 2021
+;
+;   This is a standalone topology file
+;
+;   Created by:
+;   ParmEd:       , VERSION0+untagged.3365.g5f75d10
+;   Executable:
+;   Library dir:  /Users/quachcd/opt/anaconda3/envs/general/share/gromacs/top
+;   Command line:
+;
+;
+
+[ defaults ]
+; nbfunc        comb-rule       gen-pairs       fudgeLJ fudgeQQ
+1               3               no              1            0.5
+
+[ atomtypes ]
+; name    at.num    mass    charge ptype  sigma      epsilon
+opls_135        6  12.010780  0.00000000  A           0.35       0.276144
+opls_465        6  12.010780  0.00000000  A          0.375        0.43932
+opls_466        8  15.999430  0.00000000  A          0.296        0.87864
+opls_467        8  15.999430  0.00000000  A            0.3        0.71128
+opls_490        6  12.010780  0.00000000  A           0.35       0.276144
+opls_282        1   1.007947  0.00000000  A          0.242        0.06276
+opls_469        1   1.007947  0.00000000  A          0.242        0.06276
+
+
+[ moleculetype ]
+; Name            nrexcl
+RES          3
+
+[ atoms ]
+;   nr       type  resnr residue  atom   cgnr    charge       mass  typeB    chargeB      massB
+; residue    1 RES rtp RES q -0.0
+    1   opls_135      1    RES      C      1 -0.18000000  12.010780   ; qtot -0.180000
+    2   opls_465      1    RES      C      2 0.51000000  12.010780   ; qtot 0.330000
+    3   opls_466      1    RES      O      3 -0.43000000  15.999430   ; qtot -0.100000
+    4   opls_467      1    RES      O      4 -0.33000000  15.999430   ; qtot -0.430000
+    5   opls_490      1    RES      C      5 0.19000000  12.010780   ; qtot -0.240000
+    6   opls_490      1    RES      C      6 0.19000000  12.010780   ; qtot -0.050000
+    7   opls_467      1    RES      O      7 -0.33000000  15.999430   ; qtot -0.380000
+    8   opls_465      1    RES      C      8 0.51000000  12.010780   ; qtot 0.130000
+    9   opls_466      1    RES      O      9 -0.43000000  15.999430   ; qtot -0.300000
+   10   opls_135      1    RES      C     10 -0.18000000  12.010780   ; qtot -0.480000
+   11   opls_282      1    RES      H     11 0.06000000   1.007947   ; qtot -0.420000
+   12   opls_282      1    RES      H     12 0.06000000   1.007947   ; qtot -0.360000
+   13   opls_282      1    RES      H     13 0.06000000   1.007947   ; qtot -0.300000
+   14   opls_469      1    RES      H     14 0.03000000   1.007947   ; qtot -0.270000
+   15   opls_469      1    RES      H     15 0.03000000   1.007947   ; qtot -0.240000
+   16   opls_469      1    RES      H     16 0.03000000   1.007947   ; qtot -0.210000
+   17   opls_469      1    RES      H     17 0.03000000   1.007947   ; qtot -0.180000
+   18   opls_282      1    RES      H     18 0.06000000   1.007947   ; qtot -0.120000
+   19   opls_282      1    RES      H     19 0.06000000   1.007947   ; qtot -0.060000
+   20   opls_282      1    RES      H     20 0.06000000   1.007947   ; qtot -0.000000
+
+[ bonds ]
+;    ai     aj funct         c0         c1         c2         c3
+      2      1     1   0.15220 265265.600000
+      3      2     1   0.12290 476976.000000
+      4      2     1   0.13270 179075.200000
+      5      4     1   0.14100 267776.000000
+      6      5     1   0.15290 224262.400000
+      7      6     1   0.14100 267776.000000
+      8      7     1   0.13270 179075.200000
+      9      8     1   0.12290 476976.000000
+     10      8     1   0.15220 265265.600000
+     11      1     1   0.10900 284512.000000
+     12      1     1   0.10900 284512.000000
+     13      1     1   0.10900 284512.000000
+     14      5     1   0.10900 284512.000000
+     15      5     1   0.10900 284512.000000
+     16      6     1   0.10900 284512.000000
+     17      6     1   0.10900 284512.000000
+     18     10     1   0.10900 284512.000000
+     19     10     1   0.10900 284512.000000
+     20     10     1   0.10900 284512.000000
+
+[ pairs ]
+;    ai     aj funct         c0         c1         c2         c3
+      1      5     1 0.350000000 0.138072000
+      3      5     1 0.323000000 0.246288025
+      2      6     1 0.362500000 0.174151932
+      4      7     1 0.300000000 0.355640000
+      5      8     1 0.362500000 0.174151932
+      6      9     1 0.323000000 0.246288025
+      6     10     1 0.350000000 0.138072000
+      3     11     1 0.269000000 0.117413209
+      4     11     1 0.271000000 0.105640822
+      3     12     1 0.269000000 0.117413209
+      4     12     1 0.271000000 0.105640822
+      3     13     1 0.269000000 0.117413209
+      4     13     1 0.271000000 0.105640822
+      2     14     1 0.308500000 0.083023676
+      7     14     1 0.271000000 0.105640822
+      2     15     1 0.308500000 0.083023676
+      7     15     1 0.271000000 0.105640822
+      4     16     1 0.271000000 0.105640822
+      8     16     1 0.308500000 0.083023676
+     14     16     1 0.242000000 0.031380000
+     15     16     1 0.242000000 0.031380000
+      4     17     1 0.271000000 0.105640822
+      8     17     1 0.308500000 0.083023676
+     14     17     1 0.242000000 0.031380000
+     15     17     1 0.242000000 0.031380000
+      7     18     1 0.271000000 0.105640822
+      9     18     1 0.269000000 0.117413209
+      7     19     1 0.271000000 0.105640822
+      9     19     1 0.269000000 0.117413209
+      7     20     1 0.271000000 0.105640822
+      9     20     1 0.269000000 0.117413209
+
+[ angles ]
+;    ai     aj     ak funct         c0         c1         c2         c3
+      1      2      3     1   120.4000000 669.440000
+      1      2      4     1   111.4000000 677.808000
+      2      1     11     1   109.5000000 292.880000
+      2      1     12     1   109.5000000 292.880000
+      2      1     13     1   109.5000000 292.880000
+      2      4      5     1   116.9000000 694.544000
+      3      2      4     1   123.4000000 694.544000
+      4      5      6     1   109.5000000 418.400000
+      4      5     14     1   109.5000000 292.880000
+      4      5     15     1   109.5000000 292.880000
+      5      6      7     1   109.5000000 418.400000
+      5      6     16     1   110.7000000 313.800000
+      5      6     17     1   110.7000000 313.800000
+      6      5     14     1   110.7000000 313.800000
+      6      5     15     1   110.7000000 313.800000
+      6      7      8     1   116.9000000 694.544000
+      7      6     16     1   109.5000000 292.880000
+      7      6     17     1   109.5000000 292.880000
+      7      8      9     1   123.4000000 694.544000
+      7      8     10     1   111.4000000 677.808000
+      8     10     18     1   109.5000000 292.880000
+      8     10     19     1   109.5000000 292.880000
+      8     10     20     1   109.5000000 292.880000
+      9      8     10     1   120.4000000 669.440000
+     11      1     12     1   107.8000000 276.144000
+     11      1     13     1   107.8000000 276.144000
+     12      1     13     1   107.8000000 276.144000
+     14      5     15     1   107.8000000 276.144000
+     16      6     17     1   107.8000000 276.144000
+     18     10     19     1   107.8000000 276.144000
+     18     10     20     1   107.8000000 276.144000
+     19     10     20     1   107.8000000 276.144000
+
+[ dihedrals ]
+;    ai     aj     ak     al funct         c0         c1         c2         c3         c4         c5
+      1      2      4      5     3    31.2063700    -9.7675400   -21.4388100     0.0000000     0.0000000     0.0000000
+      2      4      5      6     3    -2.1966000     5.2007100     0.5271900    -3.5313000     0.0000000     0.0000000
+      2      4      5     14     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      2      4      5     15     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      3      2      1     11     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      1     12     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      1     13     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      4      5     3    21.4388100     0.0000000   -21.4388100     0.0000000     0.0000000     0.0000000
+      4      2      1     11     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      2      1     12     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      2      1     13     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      5      6      7     3    -1.1506000     1.1506000     0.0000000     0.0000000     0.0000000     0.0000000
+      4      5      6     16     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      4      5      6     17     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      5      6      7      8     3    -2.1966000     5.2007100     0.5271900    -3.5313000     0.0000000     0.0000000
+      6      7      8      9     3    21.4388100     0.0000000   -21.4388100     0.0000000     0.0000000     0.0000000
+      6      7      8     10     3    31.2063700    -9.7675400   -21.4388100     0.0000000     0.0000000     0.0000000
+      7      6      5     14     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      7      6      5     15     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      7      8     10     18     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      7      8     10     19     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      7      8     10     20     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      8      7      6     16     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      8      7      6     17     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      9      8     10     18     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      9      8     10     19     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      9      8     10     20     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+     14      5      6     16     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     14      5      6     17     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     15      5      6     16     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     15      5      6     17     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+
+[ system ]
+; Name
+Generic title
+
+[ molecules ]
+; Compound       #mols
+RES                  1
diff --git a/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.gro b/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.gro
new file mode 100644
index 00000000..154b7315
--- /dev/null
+++ b/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.gro
@@ -0,0 +1,29 @@
+GROningen MAchine for Chemical Simulation
+   26
+    1RES      C    1  -0.457   0.004  -0.076
+    1RES      C    2  -0.349   0.029   0.023
+    1RES      O    3  -0.366   0.113   0.115
+    1RES      O    4  -0.227  -0.039   0.010
+    1RES      C    5  -0.118  -0.019   0.100
+    1RES      C    6   0.001  -0.107   0.059
+    1RES      C    7   0.049  -0.082  -0.085
+    1RES      C    8   0.107   0.058  -0.108
+    1RES      O    9   0.209   0.089  -0.013
+    1RES      C   10   0.338   0.034  -0.018
+    1RES      O   11   0.371  -0.044  -0.112
+    1RES      C   12   0.435   0.065   0.090
+    1RES      H   13  -0.454   0.082  -0.155
+    1RES      H   14  -0.444  -0.096  -0.123
+    1RES      H   15  -0.556   0.007  -0.025
+    1RES      H   16  -0.149  -0.046   0.203
+    1RES      H   17  -0.088   0.088   0.100
+    1RES      H   18   0.084  -0.090   0.131
+    1RES      H   19  -0.030  -0.213   0.068
+    1RES      H   20   0.128  -0.157  -0.109
+    1RES      H   21  -0.034  -0.099  -0.156
+    1RES      H   22   0.147   0.066  -0.211
+    1RES      H   23   0.026   0.134  -0.098
+    1RES      H   24   0.433  -0.016   0.166
+    1RES      H   25   0.538   0.074   0.048
+    1RES      H   26   0.408   0.161   0.139
+   1.59379   0.87448   0.91375
diff --git a/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.top b/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.top
new file mode 100644
index 00000000..a2a395a4
--- /dev/null
+++ b/foyer/opls_validation/4-acetyloxybutyl-acetate/4-acetyloxybutyl-acetate.top
@@ -0,0 +1,253 @@
+;
+;   File 4-acetyloxybutyl-acetate.top  was generated
+;   By user: quachcd (501)
+;   On host:Cos-MacBook-Pro.local
+;   At date:Tue. June  2 15:45:44 2021
+;
+;   This is a standalone topology file
+;
+;   Created by:
+;   ParmEd:       , VERSION0+untagged.3365.g5f75d10
+;   Executable:
+;   Library dir:  /Users/quachcd/opt/anaconda3/envs/general/share/gromacs/top
+;   Command line:
+;
+;
+
+[ defaults ]
+; nbfunc        comb-rule       gen-pairs       fudgeLJ fudgeQQ
+1               3               no              1            0.5
+
+[ atomtypes ]
+; name    at.num    mass    charge ptype  sigma      epsilon
+opls_135        6  12.010780  0.00000000  A           0.35       0.276144
+opls_465        6  12.010780  0.00000000  A          0.375        0.43932
+opls_466        8  15.999430  0.00000000  A          0.296        0.87864
+opls_467        8  15.999430  0.00000000  A            0.3        0.71128
+opls_490        6  12.010780  0.00000000  A           0.35       0.276144
+opls_136        6  12.010780  0.00000000  A           0.35       0.276144
+opls_282        1   1.007947  0.00000000  A          0.242        0.06276
+opls_469        1   1.007947  0.00000000  A          0.242        0.06276
+opls_140        1   1.007947  0.00000000  A           0.25        0.12552
+
+
+[ moleculetype ]
+; Name            nrexcl
+RES          3
+
+[ atoms ]
+;   nr       type  resnr residue  atom   cgnr    charge       mass  typeB    chargeB      massB
+; residue    1 RES rtp RES q 0.0
+    1   opls_135      1    RES      C      1 -0.18000000  12.010780   ; qtot -0.180000
+    2   opls_465      1    RES      C      2 0.51000000  12.010780   ; qtot 0.330000
+    3   opls_466      1    RES      O      3 -0.43000000  15.999430   ; qtot -0.100000
+    4   opls_467      1    RES      O      4 -0.33000000  15.999430   ; qtot -0.430000
+    5   opls_490      1    RES      C      5 0.19000000  12.010780   ; qtot -0.240000
+    6   opls_136      1    RES      C      6 -0.12000000  12.010780   ; qtot -0.360000
+    7   opls_136      1    RES      C      7 -0.12000000  12.010780   ; qtot -0.480000
+    8   opls_490      1    RES      C      8 0.19000000  12.010780   ; qtot -0.290000
+    9   opls_467      1    RES      O      9 -0.33000000  15.999430   ; qtot -0.620000
+   10   opls_465      1    RES      C     10 0.51000000  12.010780   ; qtot -0.110000
+   11   opls_466      1    RES      O     11 -0.43000000  15.999430   ; qtot -0.540000
+   12   opls_135      1    RES      C     12 -0.18000000  12.010780   ; qtot -0.720000
+   13   opls_282      1    RES      H     13 0.06000000   1.007947   ; qtot -0.660000
+   14   opls_282      1    RES      H     14 0.06000000   1.007947   ; qtot -0.600000
+   15   opls_282      1    RES      H     15 0.06000000   1.007947   ; qtot -0.540000
+   16   opls_469      1    RES      H     16 0.03000000   1.007947   ; qtot -0.510000
+   17   opls_469      1    RES      H     17 0.03000000   1.007947   ; qtot -0.480000
+   18   opls_140      1    RES      H     18 0.06000000   1.007947   ; qtot -0.420000
+   19   opls_140      1    RES      H     19 0.06000000   1.007947   ; qtot -0.360000
+   20   opls_140      1    RES      H     20 0.06000000   1.007947   ; qtot -0.300000
+   21   opls_140      1    RES      H     21 0.06000000   1.007947   ; qtot -0.240000
+   22   opls_469      1    RES      H     22 0.03000000   1.007947   ; qtot -0.210000
+   23   opls_469      1    RES      H     23 0.03000000   1.007947   ; qtot -0.180000
+   24   opls_282      1    RES      H     24 0.06000000   1.007947   ; qtot -0.120000
+   25   opls_282      1    RES      H     25 0.06000000   1.007947   ; qtot -0.060000
+   26   opls_282      1    RES      H     26 0.06000000   1.007947   ; qtot 0.000000
+
+[ bonds ]
+;    ai     aj funct         c0         c1         c2         c3
+      2      1     1   0.15220 265265.600000
+      3      2     1   0.12290 476976.000000
+      4      2     1   0.13270 179075.200000
+      5      4     1   0.14100 267776.000000
+      6      5     1   0.15290 224262.400000
+      7      6     1   0.15290 224262.400000
+      8      7     1   0.15290 224262.400000
+      9      8     1   0.14100 267776.000000
+     10      9     1   0.13270 179075.200000
+     11     10     1   0.12290 476976.000000
+     12     10     1   0.15220 265265.600000
+     13      1     1   0.10900 284512.000000
+     14      1     1   0.10900 284512.000000
+     15      1     1   0.10900 284512.000000
+     16      5     1   0.10900 284512.000000
+     17      5     1   0.10900 284512.000000
+     18      6     1   0.10900 284512.000000
+     19      6     1   0.10900 284512.000000
+     20      7     1   0.10900 284512.000000
+     21      7     1   0.10900 284512.000000
+     22      8     1   0.10900 284512.000000
+     23      8     1   0.10900 284512.000000
+     24     12     1   0.10900 284512.000000
+     25     12     1   0.10900 284512.000000
+     26     12     1   0.10900 284512.000000
+
+[ pairs ]
+;    ai     aj funct         c0         c1         c2         c3
+      1      5     1 0.350000000 0.138072000
+      3      5     1 0.323000000 0.246288025
+      2      6     1 0.362500000 0.174151932
+      4      7     1 0.325000000 0.221594057
+      5      8     1 0.350000000 0.138072000
+      6      9     1 0.325000000 0.221594057
+      7     10     1 0.362500000 0.174151932
+      8     11     1 0.323000000 0.246288025
+      8     12     1 0.350000000 0.138072000
+      3     13     1 0.269000000 0.117413209
+      4     13     1 0.271000000 0.105640822
+      3     14     1 0.269000000 0.117413209
+      4     14     1 0.271000000 0.105640822
+      3     15     1 0.269000000 0.117413209
+      4     15     1 0.271000000 0.105640822
+      2     16     1 0.308500000 0.083023676
+      7     16     1 0.296000000 0.065823243
+      2     17     1 0.308500000 0.083023676
+      7     17     1 0.296000000 0.065823243
+      4     18     1 0.275000000 0.149398683
+      8     18     1 0.300000000 0.093088123
+     16     18     1 0.246000000 0.044378022
+     17     18     1 0.246000000 0.044378022
+      4     19     1 0.275000000 0.149398683
+      8     19     1 0.300000000 0.093088123
+     16     19     1 0.246000000 0.044378022
+     17     19     1 0.246000000 0.044378022
+      5     20     1 0.300000000 0.093088123
+      9     20     1 0.275000000 0.149398683
+     18     20     1 0.250000000 0.062760000
+     19     20     1 0.250000000 0.062760000
+      5     21     1 0.300000000 0.093088123
+      9     21     1 0.275000000 0.149398683
+     18     21     1 0.250000000 0.062760000
+     19     21     1 0.250000000 0.062760000
+      6     22     1 0.296000000 0.065823243
+     10     22     1 0.308500000 0.083023676
+     20     22     1 0.246000000 0.044378022
+     21     22     1 0.246000000 0.044378022
+      6     23     1 0.296000000 0.065823243
+     10     23     1 0.308500000 0.083023676
+     20     23     1 0.246000000 0.044378022
+     21     23     1 0.246000000 0.044378022
+      9     24     1 0.271000000 0.105640822
+     11     24     1 0.269000000 0.117413209
+      9     25     1 0.271000000 0.105640822
+     11     25     1 0.269000000 0.117413209
+      9     26     1 0.271000000 0.105640822
+     11     26     1 0.269000000 0.117413209
+
+[ angles ]
+;    ai     aj     ak funct         c0         c1         c2         c3
+      1      2      3     1   120.4000000 669.440000
+      1      2      4     1   111.4000000 677.808000
+      2      1     13     1   109.5000000 292.880000
+      2      1     14     1   109.5000000 292.880000
+      2      1     15     1   109.5000000 292.880000
+      2      4      5     1   116.9000000 694.544000
+      3      2      4     1   123.4000000 694.544000
+      4      5      6     1   109.5000000 418.400000
+      4      5     16     1   109.5000000 292.880000
+      4      5     17     1   109.5000000 292.880000
+      5      6      7     1   112.7000000 488.273000
+      5      6     18     1   110.7000000 313.800000
+      5      6     19     1   110.7000000 313.800000
+      6      5     16     1   110.7000000 313.800000
+      6      5     17     1   110.7000000 313.800000
+      6      7      8     1   112.7000000 488.273000
+      6      7     20     1   110.7000000 313.800000
+      6      7     21     1   110.7000000 313.800000
+      7      6     18     1   110.7000000 313.800000
+      7      6     19     1   110.7000000 313.800000
+      7      8      9     1   109.5000000 418.400000
+      7      8     22     1   110.7000000 313.800000
+      7      8     23     1   110.7000000 313.800000
+      8      7     20     1   110.7000000 313.800000
+      8      7     21     1   110.7000000 313.800000
+      8      9     10     1   116.9000000 694.544000
+      9      8     22     1   109.5000000 292.880000
+      9      8     23     1   109.5000000 292.880000
+      9     10     11     1   123.4000000 694.544000
+      9     10     12     1   111.4000000 677.808000
+     10     12     24     1   109.5000000 292.880000
+     10     12     25     1   109.5000000 292.880000
+     10     12     26     1   109.5000000 292.880000
+     11     10     12     1   120.4000000 669.440000
+     13      1     14     1   107.8000000 276.144000
+     13      1     15     1   107.8000000 276.144000
+     14      1     15     1   107.8000000 276.144000
+     16      5     17     1   107.8000000 276.144000
+     18      6     19     1   107.8000000 276.144000
+     20      7     21     1   107.8000000 276.144000
+     22      8     23     1   107.8000000 276.144000
+     24     12     25     1   107.8000000 276.144000
+     24     12     26     1   107.8000000 276.144000
+     25     12     26     1   107.8000000 276.144000
+
+[ dihedrals ]
+;    ai     aj     ak     al funct         c0         c1         c2         c3         c4         c5
+      1      2      4      5     3    31.2063700    -9.7675400   -21.4388100     0.0000000     0.0000000     0.0000000
+      2      4      5      6     3    -2.1966000     5.2007100     0.5271900    -3.5313000     0.0000000     0.0000000
+      2      4      5     16     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      2      4      5     17     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+      3      2      1     13     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      1     14     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      1     15     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+      3      2      4      5     3    21.4388100     0.0000000   -21.4388100     0.0000000     0.0000000     0.0000000
+      4      2      1     13     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      2      1     14     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      2      1     15     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      4      5      6      7     3     2.8744100     0.5815800     2.0920000    -5.5479900     0.0000000     0.0000000
+      4      5      6     18     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      4      5      6     19     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      5      6      7      8     3     2.9288000    -1.4644000     0.2092000    -1.6736000     0.0000000     0.0000000
+      5      6      7     20     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      5      6      7     21     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      6      7      8      9     3     2.8744100     0.5815800     2.0920000    -5.5479900     0.0000000     0.0000000
+      6      7      8     22     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      6      7      8     23     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      7      6      5     16     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      7      6      5     17     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      7      8      9     10     3    -2.1966000     5.2007100     0.5271900    -3.5313000     0.0000000     0.0000000
+      8      7      6     18     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      8      7      6     19     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+      8      9     10     11     3    21.4388100     0.0000000   -21.4388100     0.0000000     0.0000000     0.0000000
+      8      9     10     12     3    31.2063700    -9.7675400   -21.4388100     0.0000000     0.0000000     0.0000000
+      9      8      7     20     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      9      8      7     21     3     0.9790500     2.9371600     0.0000000    -3.9162200     0.0000000     0.0000000
+      9     10     12     24     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      9     10     12     25     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+      9     10     12     26     3     0.2761500     0.8284400     0.0000000    -1.1045800     0.0000000     0.0000000
+     10      9      8     22     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+     10      9      8     23     3     0.4142100     1.2426500     0.0000000    -1.6568600     0.0000000     0.0000000
+     11     10     12     24     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+     11     10     12     25     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+     11     10     12     26     3     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000     0.0000000
+     16      5      6     18     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     16      5      6     19     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     17      5      6     18     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     17      5      6     19     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     18      6      7     20     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     18      6      7     21     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     19      6      7     20     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     19      6      7     21     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     20      7      8     22     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     20      7      8     23     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     21      7      8     22     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+     21      7      8     23     3     0.6276000     1.8828000     0.0000000    -2.5104000     0.0000000     0.0000000
+
+[ system ]
+; Name
+Generic title
+
+[ molecules ]
+; Compound       #mols
+RES                  1
diff --git a/foyer/opls_validation/propionic-acid/.propionic-acid.top.swp b/foyer/opls_validation/propionic-acid/.propionic-acid.top.swp
new file mode 100644
index 00000000..c675ed2b
Binary files /dev/null and b/foyer/opls_validation/propionic-acid/.propionic-acid.top.swp differ


Test patch:
diff --git a/foyer/tests/implemented_opls_tests.txt b/foyer/tests/implemented_opls_tests.txt
index 18277890..4639b67f 100644
--- a/foyer/tests/implemented_opls_tests.txt
+++ b/foyer/tests/implemented_opls_tests.txt
@@ -25,6 +25,8 @@
 4-methylphenol
 acetamide
 acetate
+2-acetyloxyethyl-acetate
+4-acetyloxybutyl-acetate
 acetone
 benzene
 benzonitrile
diff --git a/foyer/tests/test_forcefield.py b/foyer/tests/test_forcefield.py
index eeb9664b..debf9fa4 100644
--- a/foyer/tests/test_forcefield.py
+++ b/foyer/tests/test_forcefield.py
@@ -639,13 +639,13 @@ def test_load_metadata_list_xml(self):
 
     def test_load_metadata_from_internal_forcefield_plugin_loader(self):
         from_xml_ff = forcefields.load_OPLSAA()
-        assert from_xml_ff.version == "0.0.1"
+        assert from_xml_ff.version == "0.0.2"
         assert from_xml_ff.name == "OPLS-AA"
         assert from_xml_ff.combining_rule == "geometric"
 
     def test_load_metadata_from_internal_name(self):
         from_xml_ff = Forcefield(name="oplsaa")
-        assert from_xml_ff.version == "0.0.1"
+        assert from_xml_ff.version == "0.0.2"
         assert from_xml_ff.name == "OPLS-AA"
         assert from_xml_ff.combining_rule == "geometric"
 
diff --git a/foyer/tests/test_opls.py b/foyer/tests/test_opls.py
index e88654b9..b80f27c6 100755
--- a/foyer/tests/test_opls.py
+++ b/foyer/tests/test_opls.py
@@ -46,7 +46,7 @@ def find_correctly_implemented(self):
 
     def test_opls_metadata(self, oplsaa):
         assert oplsaa.name == "OPLS-AA"
-        assert oplsaa.version == "0.0.1"
+        assert oplsaa.version == "0.0.2"
         assert oplsaa.combining_rule == "geometric"
 
     @pytest.mark.parametrize("mol_name", correctly_implemented)