diff --git a/bids/grabbids/bids_layout.py b/bids/grabbids/bids_layout.py
index <HASH>..<HASH> 100644
--- a/bids/grabbids/bids_layout.py
+++ b/bids/grabbids/bids_layout.py
@@ -31,7 +31,7 @@ class BIDSLayout(Layout):
         for ext in extensions or []:
             with open(pathjoin(root, 'config', '%s.json' % ext)) as fobj:
                 ext_config = json.load(fobj)
-                config['entities'].update(ext_config['entities'])
+                config['entities'].extend(ext_config['entities'])
 
         super(BIDSLayout, self).__init__(path, config,
                                          dynamic_getters=True, **kwargs)
diff --git a/bids/grabbids/tests/test_grabbids.py b/bids/grabbids/tests/test_grabbids.py
index <HASH>..<HASH> 100644
--- a/bids/grabbids/tests/test_grabbids.py
+++ b/bids/grabbids/tests/test_grabbids.py
@@ -114,3 +114,7 @@ def test_exclude(testlayout2):
         testlayout2.root, 'models/ds-005_type-russ_sub-all_model.json') \
         not in testlayout2.files
     assert 'all' not in testlayout2.get_subjects()
+
+
+def test_layout_with_derivs(testlayout3):
+    assert isinstance(testlayout3.files, dict)
TEST: Use derivatives fixture, fix error