diff --git a/genom3/Makefile b/genom3/Makefile
index 435035e8d6d64745203db7a7a748e7e93d45e386..ed9bee02a62cca3e497c6aba964c95139550148b 100644
--- a/genom3/Makefile
+++ b/genom3/Makefile
@@ -2,8 +2,7 @@
 # Created:			Anthony Mallet on Fri, 19 Oct 2012
 #
 
-PKGREVISION=	1
-VERSION=	2.99.21
+VERSION=	2.99.22
 DISTNAME=	genom-${VERSION}
 PKGNAME=	genom3-${VERSION}
 CATEGORIES=	architecture
@@ -11,7 +10,7 @@ MASTER_SITES=	${MASTER_SITE_OPENROBOTS:=genom/}
 MASTER_REPOSITORY= git ssh://trac.laas.fr/git/robots/genom3
 
 MAINTAINER=	mallet@laas.fr
-HOMEPAGE=	https://homepages.laas.fr/mallet/soft/architecture/genom3
+HOMEPAGE=	http://www.openrobots.org/wiki/genom3
 COMMENT=	Software components generator for robotics architecture.
 
 LICENSE=	2-clause-bsd
diff --git a/genom3/PLIST.templates b/genom3/PLIST.templates
index 2b7a8db3630fcd6c0de95321b1de25a1a917fbb7..cffd0faac023df1adc37a91847b77268c470af79 100644
--- a/genom3/PLIST.templates
+++ b/genom3/PLIST.templates
@@ -4,21 +4,21 @@
 ${PLIST.pocolibs-server}bin/${GENOM_MODULE}-pocolibs
 
 @comment pocolibs/client/c
-${PLIST.pocolibs-client-c}include/${GENOM_MODULE}/c/client.h
-${PLIST.pocolibs-client-c}lib/genom/client/c/${GENOM_MODULE}.la
-${PLIST.pocolibs-client-c}lib/lib${GENOM_MODULE}-c-client.la
-${PLIST.pocolibs-client-c}lib/pkgconfig/${GENOM_MODULE}-c-client.pc
+${PLIST.pocolibs-client-c}include/genom/pocolibs/${GENOM_MODULE}/c/client.h
+${PLIST.pocolibs-client-c}lib/genom/pocolibs/plugins/${GENOM_MODULE}.la
+${PLIST.pocolibs-client-c}lib/genom/pocolibs/lib${GENOM_MODULE}-c-client.la
+${PLIST.pocolibs-client-c}lib/pkgconfig/genom/pocolibs/${GENOM_MODULE}-c-client.pc
 
 @comment ros/server
 ${PLIST.ros-server}bin/${GENOM_MODULE}-ros
 
 @comment ros/client/c
-${PLIST.ros-client-c}include/${GENOM_MODULE}/c/client.h
-${PLIST.ros-client-c}lib/genom/client/c/${GENOM_MODULE}.la
-${PLIST.ros-client-c}lib/lib${GENOM_MODULE}-c-client.la
-${PLIST.ros-client-c}lib/pkgconfig/${GENOM_MODULE}-c-client.pc
+${PLIST.ros-client-c}include/genom/ros/${GENOM_MODULE}/c/client.h
+${PLIST.ros-client-c}lib/genom/ros/plugins/${GENOM_MODULE}.la
+${PLIST.ros-client-c}lib/genom/ros/lib${GENOM_MODULE}-c-client.la
+${PLIST.ros-client-c}lib/pkgconfig/genom/ros/${GENOM_MODULE}-c-client.pc
 
-@comment ros/client/ros is a dynamic PLIST generated by the template
+@comment ros/client/ros is a dynamic PLIST generated by module.mk
 
 @comment openprs/client
 ${PLIST.openprs}lib/genom/client/openprs/${GENOM_MODULE}-openprs-client.la
diff --git a/genom3/depend.mk b/genom3/depend.mk
index 62f859776d194067aa2e2511b7167d6fc1b2d5e4..422eeef1def3ba3c050b288206782dae4be5e038 100644
--- a/genom3/depend.mk
+++ b/genom3/depend.mk
@@ -19,7 +19,7 @@ SYSTEM_SEARCH.genom3=\
 	include/genom3/c/client.h		\
 	'lib/pkgconfig/genom3.pc:/Version/s/[^0-9.]//gp'
 
-DEPEND_ABI.genom3?=	genom3>=2.99.21r1
+DEPEND_ABI.genom3?=	genom3>=2.99.22
 DEPEND_DIR.genom3?=	../../wip/genom3
 
 export GENOM3=	${PREFIX.genom3}/bin/genom3
diff --git a/genom3/distinfo b/genom3/distinfo
index a9b86e0504292ee1a8a28591daadb3085e9453dc..2acecd8c0df1d107507f16087c6bcb4d46eea8e7 100644
--- a/genom3/distinfo
+++ b/genom3/distinfo
@@ -1,4 +1,3 @@
-SHA1 (genom-2.99.21.tar.gz) = bf98692dc90598c8e242ac0e25041970eaa8cd26
-RMD160 (genom-2.99.21.tar.gz) = df4fe3bd13884b98fa7d6b6f995b95ff74befc30
-Size (genom-2.99.21.tar.gz) = 1346170 bytes
-SHA1 (patch-aa) = 851080eaba72169eb0df4806822c38acd09bc04e
+SHA1 (genom-2.99.22.tar.gz) = 6cdae22a3f7b4fd84d21e6a5c44654cd7c6ba34d
+RMD160 (genom-2.99.22.tar.gz) = 2a439662c5c5d5fa4e9c15842de58e5958fbeb81
+Size (genom-2.99.22.tar.gz) = 1346320 bytes
diff --git a/genom3/module.mk b/genom3/module.mk
index e0b8fbd3968916bdff073fe6bdfceba811b4264f..c4aa4d57f8fcbb392f6ac6db54bb48f35d644470 100644
--- a/genom3/module.mk
+++ b/genom3/module.mk
@@ -40,8 +40,6 @@ genom3-autoreconf(%): genom3-generate(%)
 
 # --- options --------------------------------------------------------------
 
-PKG_OPTIONS_OPTIONAL_GROUPS+=	client-c
-
 # codels
 PKG_SUPPORTED_OPTIONS+=		codels
 PKG_SUGGESTED_OPTIONS+=		codels
@@ -65,14 +63,11 @@ define PKG_OPTION_SET.pocolibs-server
   include ../../wip/genom3-pocolibs/depend.mk
 endef
 
-PKG_OPTIONS_GROUP.client-c+=		pocolibs-client-c
+PKG_SUPPORTED_OPTIONS+=			pocolibs-client-c
 PKG_OPTION_DESCR.pocolibs-client-c=	Build a pocolibs C client
 define PKG_OPTION_SET.pocolibs-client-c
   TMPL1_WRKSRC+=	${TEMPLATES_WRKDIR}/pocolibs/client/c
 
-  # XXX temporary
-  MAKE_JOBS_SAFE=no
-
   pre-configure: genom3-autoreconf(pocolibs/client/c)
 
   include ../../middleware/pocolibs/depend.mk
@@ -105,7 +100,7 @@ define PKG_OPTION_SET.ros-server
   include ../../mk/language/c++.mk
 endef
 
-PKG_OPTIONS_GROUP.client-c+=		ros-client-c
+PKG_SUPPORTED_OPTIONS+=			ros-client-c
 PKG_OPTION_DESCR.ros-client-c=		Build a ROS C client
 define PKG_OPTION_SET.ros-client-c
   TMPL1_WRKSRC+=	${TEMPLATES_WRKDIR}/ros/client/c
@@ -137,11 +132,11 @@ define PKG_OPTION_SET.ros-client-ros
 
   # hackish ... but this is for a PLIST.guess anyway, so nothing critical
   PRINT_PLIST_AWK_FILTERS+=\
-	/include\/[$$]{GENOM_MODULE}\// {next}			\
-	/[$$]{PYTHON_SITELIB}\/[$$]{GENOM_MODULE}\// {next}	\
-	/share\/[$$]{GENOM_MODULE}\/manifest.xml$$/ {next}	\
-	/share\/[$$]{GENOM_MODULE}\/msg/ {next}			\
-	/share\/[$$]{GENOM_MODULE}\/srv/ {next}
+	/include\/${GENOM_MODULE}\// {next}				\
+	/$(subst /,\/,${PYTHON_SITELIB})\/${GENOM_MODULE}\// {next}	\
+	/share\/${GENOM_MODULE}\/manifest.xml$$/ {next}			\
+	/share\/${GENOM_MODULE}\/msg/ {next}				\
+	/share\/${GENOM_MODULE}\/srv/ {next}
 
   pre-configure: genom3-autoreconf(ros/client/ros)
 
@@ -188,14 +183,16 @@ GENERATE_PLIST+=	${CAT} ${ROBOTPKG_DIR}/${PLIST_TEMPLATES};
 PRINT_PLIST_AWK_SUBST+=	gsub("${GENOM_MODULE}", "$${GENOM_MODULE}");
 PRINT_PLIST_AWK_FILTERS=
 PRINT_PLIST_FILTER+=\
-	${AWK} '							\
+	| ${AWK} '							\
 	  BEGIN { print "@comment includes ${PLIST_TEMPLATES}" }	\
 	  ${PRINT_PLIST_AWK_FILTERS}					\
 	  NR > FNR {							\
 	     if (!($$0 in filter)) print "$${PLIST.codels}" $$0; next;	\
 	  }								\
-	  { gsub("[$$]{PLIST[^}]*}", ""); filter[$$0] }			\
-	  ' ${ROBOTPKG_DIR}/${PLIST_TEMPLATES} -;
+	  { gsub("[$$]{GENOM_MODULE}", "${GENOM_MODULE}") }		\
+	  { gsub("[$$]{PLIST[^}]*}", "") }				\
+	  { filter[$$0] }						\
+	  ' ${ROBOTPKG_DIR}/${PLIST_TEMPLATES} -
 
 
 # --- common dependencies --------------------------------------------------
diff --git a/genom3/patches/patch-aa b/genom3/patches/patch-aa
deleted file mode 100644
index 70c170d43b3c8f6ccce17b9bd252d00aaef0b4da..0000000000000000000000000000000000000000
--- a/genom3/patches/patch-aa
+++ /dev/null
@@ -1,58 +0,0 @@
-Support an "extern" parameter in tcl procedure [$component types]
-
-diff --git engine/tcl/object.tcl engine/tcl/object.tcl
-index 61a82f8..8b76321 100644
---- engine/tcl/object.tcl
-+++ engine/tcl/object.tcl
-@@ -32,8 +32,10 @@ namespace eval object {
-     if {[catch {$object class} class]} { error "not a genom object" }
- 
-     switch $visibility {
--      public - private {}
--      default { error "bad parameter $visibility: must be public or private" }
-+      public - extern - private {}
-+      default {
-+        error "bad parameter $visibility: must be public, extern or private"
-+      }
-     }
- 
-     switch $class {
-@@ -86,7 +88,7 @@ namespace eval object {
-       }
-     }
- 
--    if {$visibility == "private"} {
-+    if {$visibility == "private" || $visibility == "extern"} {
-       foreach r [$component remotes] {
-         foreach p [$r parameters] {
-           set r [type-types [$p type] $visibility $filter]
-@@ -96,7 +98,9 @@ namespace eval object {
-           set types [dict merge $types [type-types $t $visibility $filter]]
-         }
-       }
-+    }
- 
-+    if {$visibility == "private"} {
-       if {![catch {$component ids} ids]} {
-         set types [dict merge $types [type-types $ids $visibility $filter]]
-       }
---- configure~	2013-07-22 17:09:40.000000000 +0200
-+++ configure	2013-08-05 16:40:16.583601810 +0200
-@@ -570,7 +570,7 @@
- # Identity of this package.
- PACKAGE_NAME='genom'
- PACKAGE_TARNAME='genom'
--PACKAGE_VERSION='2.99.21'
-+PACKAGE_VERSION='2.99.22'
- PACKAGE_STRING='genom 2.99.21'
- PACKAGE_BUGREPORT='openrobots@laas.fr'
- PACKAGE_URL=''
-@@ -2762,7 +2762,7 @@
- 
- # Define the identity of the package.
-  PACKAGE='genom'
-- VERSION='2.99.21'
-+ VERSION='2.99.22'
- 
- 
- # Some tools Automake needs.