diff --git a/.at-spi2-core.metadata b/.at-spi2-core.metadata
index 217647a..d970d6d 100644
--- a/.at-spi2-core.metadata
+++ b/.at-spi2-core.metadata
@@ -1 +1 @@
-95d41898b4f7e84bdf5377a37ed65bf4c4a808e9 SOURCES/at-spi2-core-2.14.1.tar.xz
+c370b7fbaee618c76ec8668dc1c2f4c34e3bb505 SOURCES/at-spi2-core-2.22.0.tar.xz
diff --git a/.gitignore b/.gitignore
index 0dbfacd..64b5477 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/at-spi2-core-2.14.1.tar.xz
+SOURCES/at-spi2-core-2.22.0.tar.xz
diff --git a/SOURCES/0001-Don-t-crash-when-trying-to-set-an-invalid-state.patch b/SOURCES/0001-Don-t-crash-when-trying-to-set-an-invalid-state.patch
deleted file mode 100644
index 18cf280..0000000
--- a/SOURCES/0001-Don-t-crash-when-trying-to-set-an-invalid-state.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b8a13c0aa01a1ee37f55a0e111d0b9681cb60deb Mon Sep 17 00:00:00 2001
-From: Samuel Thibault <samuel.thibault@ens-lyon.org>
-Date: Sat, 14 Nov 2015 09:06:45 -0600
-Subject: [PATCH 1/4] Don't crash when trying to set an invalid state
-
-https://bugzilla.gnome.org/show_bug.cgi?id=757915
----
- atspi/atspi-stateset.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/atspi/atspi-stateset.c b/atspi/atspi-stateset.c
-index 1f9d993..366c48b 100644
---- a/atspi/atspi-stateset.c
-+++ b/atspi/atspi-stateset.c
-@@ -102,11 +102,11 @@ atspi_state_set_set_by_name (AtspiStateSet *set, const gchar *name, gboolean ena
-   {
-     g_warning ("AT-SPI: Attempt to set unknown state '%s'", name);
-   }
--
--  if (enabled)
--    set->states |= ((gint64)1 << value->value);
-   else
--    set->states &= ~((gint64)1 << value->value);
-+    if (enabled)
-+      set->states |= ((gint64)1 << value->value);
-+    else
-+      set->states &= ~((gint64)1 << value->value);
- 
-   g_type_class_unref (type_class);
- }
--- 
-2.5.0
-
diff --git a/SOURCES/0002-registryd-Avoid-crashing-with-a-NULL-keystring.patch b/SOURCES/0002-registryd-Avoid-crashing-with-a-NULL-keystring.patch
deleted file mode 100644
index 25247cd..0000000
--- a/SOURCES/0002-registryd-Avoid-crashing-with-a-NULL-keystring.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 662a5454c127037627e8e5a7e3f2b5cbeb1c44f1 Mon Sep 17 00:00:00 2001
-From: Rui Matos <tiagomatos@gmail.com>
-Date: Wed, 6 Apr 2016 16:40:44 +0200
-Subject: [PATCH 2/4] registryd: Avoid crashing with a NULL keystring
-
-From a coverity check:
-
-1. at-spi2-core-2.14.1/registryd/deviceeventcontroller-x11.c:1167:
-deref_ptr_in_call: Dereferencing pointer "keystring".
-2. at-spi2-core-2.14.1/registryd/deviceeventcontroller-x11.c:1169:
-check_after_deref: Null-checking "keystring" suggests that it may be
-null, but it has already been dereferenced on all paths leading to the
-check.
-(keystring, -1, &c))) {
----
- registryd/deviceeventcontroller-x11.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/registryd/deviceeventcontroller-x11.c b/registryd/deviceeventcontroller-x11.c
-index d878d53..e003c00 100644
---- a/registryd/deviceeventcontroller-x11.c
-+++ b/registryd/deviceeventcontroller-x11.c
-@@ -1164,8 +1164,6 @@ spi_dec_x11_synth_keystring (SpiDEController *controller, guint synth_type, gint
- 	const gchar *c;
- 	KeySym keysym;
- 
--	maxlen = strlen (keystring) + 1;
--	keysyms = g_new0 (KeySym, maxlen);
- 	if (!(keystring && *keystring && g_utf8_validate (keystring, -1, &c))) { 
- 		retval = FALSE;
- 	} 
-@@ -1173,6 +1171,9 @@ spi_dec_x11_synth_keystring (SpiDEController *controller, guint synth_type, gint
- #ifdef SPI_DEBUG
- 		fprintf (stderr, "[keystring synthesis attempted on %s]\n", keystring);
- #endif
-+		maxlen = strlen (keystring) + 1;
-+		keysyms = g_new0 (KeySym, maxlen);
-+
- 		while (keystring && (unichar = g_utf8_get_char (keystring))) {
- 			char bytes[6];
- 			gint mbytes;
-@@ -1206,8 +1207,9 @@ spi_dec_x11_synth_keystring (SpiDEController *controller, guint synth_type, gint
- 			}
- 		}
- 		XSynchronize (spi_get_display (), FALSE);
-+
-+		g_free (keysyms);
- 	}
--	g_free (keysyms);
- 
- 	if (synth_type == Accessibility_KEY_SYM) {
- 		keysym = keycode;
--- 
-2.5.0
-
diff --git a/SOURCES/0003-Fix-atspi_table_cell_get_position.patch b/SOURCES/0003-Fix-atspi_table_cell_get_position.patch
deleted file mode 100644
index a5bddca..0000000
--- a/SOURCES/0003-Fix-atspi_table_cell_get_position.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 282c22945a9a0a8de4043939bfca208dd064d3ae Mon Sep 17 00:00:00 2001
-From: Mike Gorse <mgorse@suse.com>
-Date: Wed, 17 Jun 2015 20:22:05 -0500
-Subject: [PATCH 3/4] Fix atspi_table_cell_get_position
-
----
- atspi/atspi-table-cell.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/atspi/atspi-table-cell.c b/atspi/atspi-table-cell.c
-index 934fb19..104801e 100644
---- a/atspi/atspi-table-cell.c
-+++ b/atspi/atspi-table-cell.c
-@@ -183,9 +183,9 @@ atspi_table_cell_get_position (AtspiTableCell *obj,
- 
-   g_return_val_if_fail (obj != NULL, -1);
- 
--  reply = _atspi_dbus_call_partial (obj, "org.freedesktop.DBuss.Properties",
--                                    "Get", atspi_interface_table_cell,
--                                    "Position");
-+  reply = _atspi_dbus_call_partial (obj, "org.freedesktop.DBus.Properties",
-+                                    "Get", NULL, "ss",
-+                                    atspi_interface_table_cell, "Position");
- 	  
-   dbus_message_iter_init (reply, &iter);
- 
--- 
-2.5.0
-
diff --git a/SOURCES/0004-atspi-event-listener-Plug-a-memory-leak.patch b/SOURCES/0004-atspi-event-listener-Plug-a-memory-leak.patch
deleted file mode 100644
index 65bc554..0000000
--- a/SOURCES/0004-atspi-event-listener-Plug-a-memory-leak.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f73eedaf241aeca72ef1a1281b30380e5ef1ddd1 Mon Sep 17 00:00:00 2001
-From: Rui Matos <tiagomatos@gmail.com>
-Date: Wed, 6 Apr 2016 17:10:03 +0200
-Subject: [PATCH 4/4] atspi-event-listener: Plug a memory leak
-
----
- atspi/atspi-event-listener.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
-index 292e88b..3b51abe 100644
---- a/atspi/atspi-event-listener.c
-+++ b/atspi/atspi-event-listener.c
-@@ -998,6 +998,9 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
-   if (e.source == NULL)
-   {
-     g_warning ("Got no valid source accessible for signal for signal %s from interface %s\n", member, category);
-+    g_free (converted_type);
-+    g_free (name);
-+    g_free (detail);
-     return DBUS_HANDLER_RESULT_HANDLED;
-   }
- 
--- 
-2.5.0
-
diff --git a/SPECS/at-spi2-core.spec b/SPECS/at-spi2-core.spec
index 8535c18..e48fcb6 100644
--- a/SPECS/at-spi2-core.spec
+++ b/SPECS/at-spi2-core.spec
@@ -1,17 +1,11 @@
 Name:           at-spi2-core
-Version:        2.14.1
-Release:        2%{?dist}
+Version:        2.22.0
+Release:        1%{?dist}
 Summary:        Protocol definitions and daemon for D-Bus at-spi
 
-Group:          System Environment/Libraries
 License:        LGPLv2+
 URL:            http://www.linuxfoundation.org/en/AT-SPI_on_D-Bus
-Source0:        http://download.gnome.org/sources/at-spi2-core/2.14/%{name}-%{version}.tar.xz
-
-Patch0:   0001-Don-t-crash-when-trying-to-set-an-invalid-state.patch
-Patch1:   0002-registryd-Avoid-crashing-with-a-NULL-keystring.patch
-Patch2:   0003-Fix-atspi_table_cell_get_position.patch
-Patch3:   0004-atspi-event-listener-Plug-a-memory-leak.patch
+Source0:        http://download.gnome.org/sources/at-spi2-core/2.22/%{name}-%{version}.tar.xz
 
 BuildRequires:  dbus-devel
 BuildRequires:  dbus-glib-devel
@@ -23,6 +17,7 @@ BuildRequires:  libXext-devel
 BuildRequires:  libXi-devel
 BuildRequires:  autoconf automake libtool
 BuildRequires:  intltool
+BuildRequires:  systemd
 
 Requires:       dbus
 
@@ -38,7 +33,6 @@ ORBIT / CORBA for its transport protocol.
 
 %package devel
 Summary: Development files and headers for at-spi2-core
-Group: Development/Libraries
 Requires: %{name}%{?_isa} = %{version}-%{release}
 
 %description devel
@@ -47,10 +41,6 @@ API documentation for libatspi.
 
 %prep
 %setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
 
 %build
 autoreconf -v --install --force
@@ -59,7 +49,7 @@ make %{?_smp_mflags}
 
 
 %install
-make install DESTDIR=$RPM_BUILD_ROOT
+%make_install
 
 %{find_lang} %{name}
 
@@ -69,15 +59,18 @@ rm $RPM_BUILD_ROOT%{_libdir}/libatspi.la
 %postun -p /sbin/ldconfig
 
 %files -f %{name}.lang
-%doc COPYING AUTHORS README
+%license COPYING
+%doc AUTHORS README
 %{_libexecdir}/at-spi2-registryd
-%{_datadir}/dbus-1/services/org.a11y.atspi.Registry.service
-%{_sysconfdir}/at-spi2
+%dir %{_datadir}/defaults/at-spi2
+%{_datadir}/defaults/at-spi2/accessibility.conf
 %{_sysconfdir}/xdg/autostart/at-spi-dbus-bus.desktop
 %{_libdir}/libatspi.so.*
 %{_libdir}/girepository-1.0/Atspi-2.0.typelib
 %{_libexecdir}/at-spi-bus-launcher
+%{_datadir}/dbus-1/accessibility-services/org.a11y.atspi.Registry.service
 %{_datadir}/dbus-1/services/org.a11y.Bus.service
+%{_userunitdir}/at-spi-dbus-bus.service
 
 
 %files devel
@@ -88,6 +81,10 @@ rm $RPM_BUILD_ROOT%{_libdir}/libatspi.la
 %{_libdir}/pkgconfig/atspi-2.pc
 
 %changelog
+* Mon Sep 26 2016 Kalev Lember <klember@redhat.com> - 2.22.0-1
+- Update to 2.22.0
+- Resolves: #1386816
+
 * Wed Apr  6 2016 Rui Matos <rmatos@redhat.com> - 2.14.1-2
 - Fixes for coverity scan issues