diff --git a/pysmiles/smiles_helper.py b/pysmiles/smiles_helper.py
index fb59432..86b05e3 100644
--- a/pysmiles/smiles_helper.py
+++ b/pysmiles/smiles_helper.py
@@ -27,7 +27,7 @@ import networkx as nx
 LOGGER = logging.getLogger(__name__)
 
 ISOTOPE_PATTERN = r'(?P<isotope>[\d]+)?'
-ELEMENT_PATTERN = r'(?P<element>b|c|n|o|s|p|\*|[A-Z][a-z]{0,2})'
+ELEMENT_PATTERN = r'(?P<element>b|c|n|o|s|p|as|se|\*|[A-Z][a-z]{0,2})'
 STEREO_PATTERN = r'(?P<stereo>@|@@|@TH[1-2]|@AL[1-2]|@SP[1-3]|@OH[\d]{1,2}|'\
                   r'@TB[\d]{1,2})?'
 HCOUNT_PATTERN = r'(?P<hcount>H[\d]?)?'

diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 33e1666..aa08857 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -19,7 +19,7 @@ jobs:
 
     strategy:
       matrix:
-       py_version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
+       py_version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
 
     steps:
     - uses: actions/checkout@v2
diff --git a/tests/test_read_smiles.py b/tests/test_read_smiles.py
index d85e718..73196d3 100644
--- a/tests/test_read_smiles.py
+++ b/tests/test_read_smiles.py
@@ -427,6 +427,52 @@ from pysmiles.testhelper import assertEqualGraphs, make_mol
          (4, 8, {'order': 1})],
         True
     ),
+    (
+        'c1[asH]ccc1',
+        [(0, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (1, {'charge': 0, 'element': 'As', 'aromatic': True}),
+         (2, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (3, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (4, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (5, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (6, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (7, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (8, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (9, {'charge': 0, 'element': 'H', 'aromatic': False})],
+        [(0, 1, {'order': 1.5}),
+         (0, 4, {'order': 1.5}),
+         (0, 5, {'order': 1}),
+         (1, 2, {'order': 1.5}),
+         (2, 3, {'order': 1.5}),
+         (2, 6, {'order': 1}),
+         (3, 4, {'order': 1.5}),
+         (3, 7, {'order': 1}),
+         (4, 8, {'order': 1}),
+         (1, 9, {'order': 1}),],
+        True
+    ),
+    (
+        'c1[se]ccc1',
+        [(0, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (1, {'charge': 0, 'element': 'Se', 'aromatic': True}),
+         (2, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (3, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (4, {'charge': 0, 'element': 'C', 'aromatic': True}),
+         (5, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (6, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (7, {'charge': 0, 'element': 'H', 'aromatic': False}),
+         (8, {'charge': 0, 'element': 'H', 'aromatic': False})],
+        [(0, 1, {'order': 1.5}),
+         (0, 4, {'order': 1.5}),
+         (0, 5, {'order': 1}),
+         (1, 2, {'order': 1.5}),
+         (2, 3, {'order': 1.5}),
+         (2, 6, {'order': 1}),
+         (3, 4, {'order': 1.5}),
+         (3, 7, {'order': 1}),
+         (4, 8, {'order': 1})],
+        True
+    ),
     (
         '[O-]C(O)CN',
         [(0, {'charge': -1, 'element': 'O', 'aromatic': False}),

`[se]` and `[as]` are not properly recognized
While `se` and `as` can appear as aromatics if they are placed inside square brackets, however it seems this library fails to parse them
tests/test_read_smiles.py::test_read_smiles[c1[asH]ccc1-node_data32-edge_data32-True] tests/test_read_smiles.py::test_read_smiles[c1[se]ccc1-node_data33-edge_data33-True]
tests/test_read_smiles.py::test_read_smiles[CCCC-node_data0-edge_data0-False] tests/test_read_smiles.py::test_read_smiles[CCC(CC)CC-node_data1-edge_data1-False] tests/test_read_smiles.py::test_read_smiles[C=C-node_data2-edge_data2-False] tests/test_read_smiles.py::test_read_smiles[C1CC1-node_data3-edge_data3-False] tests/test_read_smiles.py::test_read_smiles[C%11CC%11-node_data4-edge_data4-False] tests/test_read_smiles.py::test_read_smiles[c1ccccc1-node_data5-edge_data5-False] tests/test_read_smiles.py::test_read_smiles[C1CC=1-node_data6-edge_data6-False] tests/test_read_smiles.py::test_read_smiles[C=1CC=1-node_data7-edge_data7-False] tests/test_read_smiles.py::test_read_smiles[C=1CC1-node_data8-edge_data8-False] tests/test_read_smiles.py::test_read_smiles[C%11CC=%11-node_data9-edge_data9-False] tests/test_read_smiles.py::test_read_smiles[OS(=O)(=S)O-node_data10-edge_data10-False] tests/test_read_smiles.py::test_read_smiles[C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C))))))))))))))))))))C-node_data11-edge_data11-False] tests/test_read_smiles.py::test_read_smiles[N1CC2CCCC2CC1-node_data12-edge_data12-False] tests/test_read_smiles.py::test_read_smiles[c1ccc2ccccc2c1-node_data13-edge_data13-True] tests/test_read_smiles.py::test_read_smiles[C12(CCCCC1)CCCCC2-node_data14-edge_data14-False] tests/test_read_smiles.py::test_read_smiles[[H]C([H])([H])[H]-node_data15-edge_data15-False] tests/test_read_smiles.py::test_read_smiles[[H]O([H])[H]O([H])[H]-node_data16-edge_data16-False] tests/test_read_smiles.py::test_read_smiles[[H]=C-node_data17-edge_data17-False] tests/test_read_smiles.py::test_read_smiles[[H][H]-node_data18-edge_data18-False] tests/test_read_smiles.py::test_read_smiles[[13CH3-1:1]-node_data19-edge_data19-False] tests/test_read_smiles.py::test_read_smiles[[013CH3-:1]-node_data20-edge_data20-False] tests/test_read_smiles.py::test_read_smiles[[Cu++]-node_data21-edge_data21-False] tests/test_read_smiles.py::test_read_smiles[[Cu+2]-node_data22-edge_data22-False] tests/test_read_smiles.py::test_read_smiles[[Uuo+4]-node_data23-edge_data23-False] tests/test_read_smiles.py::test_read_smiles[[2H][CH2]-node_data24-edge_data24-False] tests/test_read_smiles.py::test_read_smiles[*-node_data25-edge_data25-False] tests/test_read_smiles.py::test_read_smiles[[*--]-node_data26-edge_data26-False] tests/test_read_smiles.py::test_read_smiles[[*-]-node_data27-edge_data27-False] tests/test_read_smiles.py::test_read_smiles[[H+]-node_data28-edge_data28-False] tests/test_read_smiles.py::test_read_smiles[[cH-1]1[cH-1][cH-1]1-node_data29-edge_data29-False] tests/test_read_smiles.py::test_read_smiles[[Rh-](Cl)(Cl)(Cl)(Cl)$[Rh-](Cl)(Cl)(Cl)Cl-node_data30-edge_data30-False] tests/test_read_smiles.py::test_read_smiles[c1occc1-node_data31-edge_data31-True] tests/test_read_smiles.py::test_read_smiles[[O-]C(O)CN-node_data34-edge_data34-True] tests/test_read_smiles.py::test_read_smiles[[*+]1[*][*]1-node_data35-edge_data35-False] tests/test_read_smiles.py::test_read_smiles[N1[*][*]1-node_data36-edge_data36-False] tests/test_read_smiles.py::test_invalid_smiles[[CL-]-ValueError] tests/test_read_smiles.py::test_invalid_smiles[[HH]-ValueError] tests/test_read_smiles.py::test_invalid_smiles[c1ccccc2-KeyError] tests/test_read_smiles.py::test_invalid_smiles[C%1CC1-ValueError] tests/test_read_smiles.py::test_invalid_smiles[c1c1CC-ValueError] tests/test_read_smiles.py::test_invalid_smiles[CC11C-ValueError] tests/test_read_smiles.py::test_invalid_smiles[1CCC1-ValueError] tests/test_read_smiles.py::test_invalid_smiles[cccccc-ValueError] tests/test_read_smiles.py::test_invalid_smiles[C=1CC-1-ValueError] tests/test_read_smiles.py::test_stereo_logging[F/C=C/F-2] tests/test_read_smiles.py::test_stereo_logging[C(\\F)=C/F-2] tests/test_read_smiles.py::test_stereo_logging[F\\C=C/F-2] tests/test_read_smiles.py::test_stereo_logging[C(/F)=C/F-2] tests/test_read_smiles.py::test_stereo_logging[NC(Br)=[C@]=C(O)C-1] tests/test_read_smiles.py::test_stereo_logging[c1ccccc1-0]