diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,10 @@
 `ldap-scim-bridge` uses [PVP][1]-compatible versioning.
 The changelog is available [on GitHub][2].
 
+## 0.5
+
+- Various small fixes (#15)
+
 ## 0.4
 
 - Filter for arbitrary LDAP attributes (#16)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -11,8 +11,9 @@
 ## intro
 
 This is a small command line tool to pull data from an LDAP server and
-push it to a SCIM peer.  It supports only  fields `externalId`,
-`userName`, `emails`, in the `User` schema and no `Group`s.
+push it to a SCIM peer.  It supports fields `externalId`,
+`userName`, `displayName`, `emails`, in the `User` schema.  It may not
+support any other fields, and it does not support scim `Group`s.
 
 If you extend this to other fields, groups, or other use cases and setups, we
 would highly appreciate pull requests, tickets, or emails (no matter how half-baked).
diff --git a/examples/wire-server/run.sh b/examples/wire-server/run.sh
--- a/examples/wire-server/run.sh
+++ b/examples/wire-server/run.sh
@@ -38,9 +38,17 @@
 }
 
 function clear() {
-  # TODO: this both fails independently; I have not investigated.
-  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// DN "ou=People,dc=nodomain"
-  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// DN "cn=john,ou=People,dc=nodomain"
+  # TODO: sometimes we want to know if this fails, but only if it's
+  # other errors than "already exists".  or maybe we can test for
+  # existence before we attemp to delete, and then fail on all
+  # remaining errors?
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "cn=notcreated,ou=NoPeople,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "cn=notcreated,ou=DeletedPeople,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "cn=uses123email,ou=People,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "cn=uses123email,ou=DeletedPeople,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "ou=People,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "ou=DeletedPeople,dc=nodomain" || true
+  sudo ldapdelete -D "cn=admin,dc=nodomain" -w geheim -H ldapi:/// "ou=NoPeople,dc=nodomain" || true
 }
 
 function scaffolding1() {
@@ -104,6 +112,8 @@
 
 # ----------------------------------------------------------------------
 # main
+
+clear
 
 scaffolding_spar
 echo WIRE_USERID: $WIRE_USERID
diff --git a/ldap-scim-bridge.cabal b/ldap-scim-bridge.cabal
--- a/ldap-scim-bridge.cabal
+++ b/ldap-scim-bridge.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                ldap-scim-bridge
-version:             0.4
+version:             0.5
 synopsis:            See README for synopsis
 description:         See README for description
 homepage:            https://github.com/fisx/ldap-scim-bridge
diff --git a/src/LdapScimBridge.hs b/src/LdapScimBridge.hs
--- a/src/LdapScimBridge.hs
+++ b/src/LdapScimBridge.hs
@@ -209,7 +209,7 @@
 
 instance Aeson.FromJSON Mapping where
   parseJSON = Aeson.withObject "Mapping" $ \obj -> do
-    fdisplayName <- obj Aeson..: "displayName"
+    mfdisplayName <- obj Aeson..:? "displayName"
     fuserName <- obj Aeson..: "userName"
     fexternalId <- obj Aeson..: "externalId"
     mfemail <- obj Aeson..:? "email"
@@ -220,7 +220,7 @@
             go mp (k, b) = Map.alter (Just . maybe [b] (b :)) k mp
 
     pure . Mapping . listToMap . catMaybes $
-      [ Just (fdisplayName, mapDisplayName fdisplayName),
+      [ (\fdisplayName -> (fdisplayName, mapDisplayName fdisplayName)) <$> mfdisplayName,
         Just (fuserName, mapUserName fuserName),
         Just (fexternalId, mapExternalId fexternalId),
         (\femail -> (femail, mapEmail femail)) <$> mfemail
@@ -246,6 +246,7 @@
           [val] -> Right $ \usr -> usr {Scim.externalId = Just val}
           bad -> Left $ WrongNumberOfAttrValues ldapFieldName "1" (Prelude.length bad)
 
+      mapEmail :: Text -> FieldMapping
       mapEmail ldapFieldName = FieldMapping "emails" $
         \case
           [] -> Right id
@@ -274,9 +275,12 @@
 listLdapUsers :: LdapConf -> LdapSearch -> LdapResult [SearchEntry]
 listLdapUsers conf searchConf = Ldap.with (ldapHost conf) (ldapPort conf) $ \l -> do
   Ldap.bind l (ldapDn conf) (ldapPassword conf)
-  let fltr :: Filter = ldapObjectClassFilter . ldapSearchObjectClass $ searchConf
-      allfltr :: Filter = And (fltr :| (ldapFilterAttrToFilter <$> ldapSearchExtra searchConf))
-  Ldap.search l (ldapSearchBase searchConf) mempty allfltr mempty
+  let fltr :: Filter =
+        And
+          ( ldapObjectClassFilter (ldapSearchObjectClass searchConf)
+              :| (ldapFilterAttrToFilter <$> ldapSearchExtra searchConf)
+          )
+  Ldap.search l (ldapSearchBase searchConf) mempty fltr mempty
 
 type User = Scim.User ScimTag
 
