restrict geometry3d and constraint3d access rights
allow dimension dependend transform type definition
add for_each to iterate all occurences of one type with a functor
reimplement mapdownstreamgeometry with functor