diff --git a/Content/Configurations/aixcave.cfg b/Content/Configurations/aixcave.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4b6b49d60c45ffc5848331061a95844073fb0570
--- /dev/null
+++ b/Content/Configurations/aixcave.cfg
@@ -0,0 +1,311 @@
+#####################################################################
+# nDisplay config file
+# 
+# This file demonstrates how to configure for the AixCAVE.
+#####################################################################
+
+#####################################################################
+# List of cluster nodes 
+#******************************************************************** 
+# Cluster node is an application instance. It's allowed to use
+# multiple instances on the same PC. Sometimes its necessary.
+#
+# Properties:
+# id       - unique node name
+# addr     - network address (IPv4 only)
+# screen   - projection screen ID to use
+# viewport - viewport ID to use
+# master   - specifies if current node is master; default is 'false'
+# port_cs  - Cluster Synchronization port (required on master node only)
+# port_ss  - Swap Synchronization port (required on master node only)
+#
+# Optional properties:
+# sound    - turns on/off sound for this application instance; default is 'false'
+#******************************************************************** 
+[cluster_node] id=node_main                               addr=10.0.1.29  screen=screen_main                    viewport=vp_1000 port_cs=41001 port_ss=41002 master=true sound=true
+
+[cluster_node] id=node_front_upper_left_eye_left          addr=10.0.1.1   screen=screen_front_upper_left        viewport=vp_1200
+[cluster_node] id=node_front_upper_left_eye_right         addr=10.0.1.1   screen=screen_front_upper_left        viewport=vp_1200
+[cluster_node] id=node_front_upper_right_eye_left         addr=10.0.1.2   screen=screen_front_upper_right       viewport=vp_1200
+[cluster_node] id=node_front_upper_right_eye_right        addr=10.0.1.2   screen=screen_front_upper_right       viewport=vp_1200
+[cluster_node] id=node_front_lower_left_eye_left          addr=10.0.1.3   screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_left_eye_right         addr=10.0.1.3   screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_right_eye_left         addr=10.0.1.4   screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_right_eye_right        addr=10.0.1.4   screen=screen_front_lower_left        viewport=vp_1200
+
+[cluster_node] id=node_left_upper_left_eye_left           addr=10.0.1.5   screen=screen_left_upper_left         viewport=vp_1200
+[cluster_node] id=node_left_upper_left_eye_right          addr=10.0.1.5   screen=screen_left_upper_left         viewport=vp_1200
+[cluster_node] id=node_left_upper_right_eye_left          addr=10.0.1.6   screen=screen_left_upper_right        viewport=vp_1200
+[cluster_node] id=node_left_upper_right_eye_right         addr=10.0.1.6   screen=screen_left_upper_right        viewport=vp_1200
+[cluster_node] id=node_left_lower_left_eye_left           addr=10.0.1.7   screen=screen_left_lower_left         viewport=vp_1200
+[cluster_node] id=node_left_lower_left_eye_right          addr=10.0.1.7   screen=screen_left_lower_left         viewport=vp_1200
+[cluster_node] id=node_left_lower_right_eye_left          addr=10.0.1.8   screen=screen_left_lower_right        viewport=vp_1200
+[cluster_node] id=node_left_lower_right_eye_right         addr=10.0.1.8   screen=screen_left_lower_right        viewport=vp_1200
+
+[cluster_node] id=node_right_upper_left_eye_left          addr=10.0.1.9   screen=screen_right_upper_left        viewport=vp_1200
+[cluster_node] id=node_right_upper_left_eye_right         addr=10.0.1.9   screen=screen_right_upper_left        viewport=vp_1200
+[cluster_node] id=node_right_upper_right_eye_left         addr=10.0.1.10  screen=screen_right_upper_right       viewport=vp_1200
+[cluster_node] id=node_right_upper_right_eye_right        addr=10.0.1.10  screen=screen_right_upper_right       viewport=vp_1200
+[cluster_node] id=node_right_lower_left_eye_left          addr=10.0.1.11  screen=screen_right_lower_left        viewport=vp_1200
+[cluster_node] id=node_right_lower_left_eye_right         addr=10.0.1.11  screen=screen_right_lower_left        viewport=vp_1200
+[cluster_node] id=node_right_lower_right_eye_left         addr=10.0.1.12  screen=screen_right_lower_right       viewport=vp_1200
+[cluster_node] id=node_right_lower_right_eye_right        addr=10.0.1.12  screen=screen_right_lower_right       viewport=vp_1200
+
+[cluster_node] id=node_back_upper_left_eye_left           addr=10.0.1.13  screen=screen_back_upper_left         viewport=vp_1200
+[cluster_node] id=node_back_upper_left_eye_right          addr=10.0.1.13  screen=screen_back_upper_left         viewport=vp_1200
+[cluster_node] id=node_back_upper_right_eye_left          addr=10.0.1.14  screen=screen_back_upper_right        viewport=vp_1200
+[cluster_node] id=node_back_upper_right_eye_right         addr=10.0.1.14  screen=screen_back_upper_right        viewport=vp_1200
+[cluster_node] id=node_back_lower_left_eye_left           addr=10.0.1.15  screen=screen_back_lower_left         viewport=vp_1200
+[cluster_node] id=node_back_lower_left_eye_right          addr=10.0.1.15  screen=screen_back_lower_left         viewport=vp_1200
+[cluster_node] id=node_back_lower_right_eye_left          addr=10.0.1.16  screen=screen_back_lower_right        viewport=vp_1200
+[cluster_node] id=node_back_lower_right_eye_right         addr=10.0.1.16  screen=screen_back_lower_right        viewport=vp_1200
+
+[cluster_node] id=node_floor_front_upper_left_eye_left    addr=10.0.1.17  screen=screen_floor_front_upper_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_left_eye_right   addr=10.0.1.17  screen=screen_floor_front_upper_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_right_eye_left   addr=10.0.1.19  screen=screen_floor_front_upper_right viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_right_eye_right  addr=10.0.1.19  screen=screen_floor_front_upper_right viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_left_eye_left    addr=10.0.1.18  screen=screen_floor_front_lower_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_left_eye_right   addr=10.0.1.18  screen=screen_floor_front_lower_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_right_eye_left   addr=10.0.1.20  screen=screen_floor_front_lower_right viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_right_eye_right  addr=10.0.1.20  screen=screen_floor_front_lower_right viewport=vp_1200
+
+[cluster_node] id=node_floor_back_upper_left_eye_left     addr=10.0.1.21  screen=screen_floor_back_upper_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_left_eye_right    addr=10.0.1.21  screen=screen_floor_back_upper_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_right_eye_left    addr=10.0.1.23  screen=screen_floor_back_upper_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_right_eye_right   addr=10.0.1.23  screen=screen_floor_back_upper_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_left_eye_left     addr=10.0.1.22  screen=screen_floor_back_lower_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_left_eye_right    addr=10.0.1.22  screen=screen_floor_back_lower_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_right_eye_left    addr=10.0.1.24  screen=screen_floor_back_lower_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_right_eye_right   addr=10.0.1.24  screen=screen_floor_back_lower_right  viewport=vp_1200
+#####################################################################
+
+
+#####################################################################
+# List of projection screens
+#******************************************************************** 
+# Projection screen is a rectangle which determines the camera frustum.
+# Usually the projection screen has the same dimensions as an output
+# display but in some cases it may differ.
+#
+# Properties:
+# id     - unique projection screen name
+# loc    - relative location to the parent component. Location is relative
+#          to the VR root if no parent specified. The pivot is a screen's
+#          center and the values are in meters.
+# rot    - relative rotation to the parent component. Rotation is relative
+#          to the VR root if no parent specified. The pivot is a screen's
+#          center and the values are in degrees.
+# size   - width (X) and height (Y) of the screen. Values are in meters.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[screen] id=screen_main                    loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=0.433333,Y=0.270833" parent=display_main
+[screen] id=screen_front_upper_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_upper_left
+[screen] id=screen_front_upper_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_upper_right 
+[screen] id=screen_front_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_lower_left 
+[screen] id=screen_front_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_lower_left
+[screen] id=screen_left_upper_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_upper_left
+[screen] id=screen_left_upper_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_upper_right 
+[screen] id=screen_left_lower_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_lower_left 
+[screen] id=screen_left_lower_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_lower_right
+[screen] id=screen_right_upper_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_upper_left
+[screen] id=screen_right_upper_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_upper_right 
+[screen] id=screen_right_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_lower_left 
+[screen] id=screen_right_lower_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_lower_right
+[screen] id=screen_back_upper_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_upper_left
+[screen] id=screen_back_upper_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_upper_right 
+[screen] id=screen_back_lower_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_lower_left 
+[screen] id=screen_back_lower_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_lower_right
+[screen] id=screen_floor_front_upper_left  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_upper_left
+[screen] id=screen_floor_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_upper_right 
+[screen] id=screen_floor_front_lower_left  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_lower_left 
+[screen] id=screen_floor_front_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_lower_right
+[screen] id=screen_floor_back_upper_left   loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_upper_left
+[screen] id=screen_floor_back_upper_right  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_upper_right 
+[screen] id=screen_floor_back_lower_left   loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_lower_left
+[screen] id=screen_floor_back_lower_right  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_lower_right
+###############################################################
+
+
+#####################################################################
+# List of viewport configurations 
+#******************************************************************** 
+# Viewport is a rectangle area of game window where rendered frame is
+# mapped. Usually the viewport starts at 0:0 and has the same size as
+# its parent window but in some cases these settings may differ.
+#
+# Properties:
+# id     - unique viewport name
+# x      - X coordinate of viewport's top left corner
+# y      - Y coordinate of viewport's top left corner
+# width  - width of viewport in pixels
+# height - height of viewport in pixels
+#
+# Optional properties:
+# flip_h - flip image horizontally; default is 'false'
+# flip_v - flip image vertically; default is 'false'
+#******************************************************************** 
+[viewport] id=vp_1000 x=0 y=0 width=1600 height=1000 flip_h=False flip_v=False
+[viewport] id=vp_1200 x=0 y=0 width=1920 height=1200 flip_h=False flip_v=False
+#####################################################################
+
+
+#####################################################################
+# List of cameras 
+#******************************************************************** 
+# Camera is a predefined point frome where the stereoscopic view built.
+# It's possible to define multiple cameras and swith the active one
+# during runtime. You're free to attach any camera to a tracking device
+# for head tracking. Consider a camera as a viewer's head.
+#
+# Properties:
+# id  - unique camera name
+# loc - relative location to the parent component. Location is relative
+#       to the VR root if no parent specified.
+# rot - relative rotation to the parent component. Rotation is relative
+#       to the VR root if no parent specified.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[camera] id=camera_dynamic loc="X=0,Y=0,Z=0" parent=shutter_glasses
+#####################################################################
+
+
+#####################################################################
+# List of scene nodes nodes (hierarchy transforms) 
+#******************************************************************** 
+# Scene node is an actor component which is basically a transformation
+# matrix. Scene nodes can be helpful to build a component hierarchy, to
+# define some special places (like a socket) within VR space.
+#
+# It might be difficult to understand what VR space origin is. Consider
+# it as a point in space where VR space starts. Any componenent listed
+# in this config file is relative to its parent or this origin.
+#
+# Properties:
+# id  - unique scene node name
+# loc - relative location to the parent component. Location is relative
+#       to the VR root if no parent specified.
+# rot - relative rotation to the parent component. Rotation is relative
+#       to the VR root if no parent specified.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[scene_node] id=cave_origin                     loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"
+[scene_node] id=cave_center                     loc="X=0,Y=0,Z=1.65"                    rot="P=0,Y=0,R=0"   parent=cave_origin
+
+[scene_node] id=flystick                        loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"   parent=cave_origin      tracker_id=dtrack_tracker tracker_ch=7
+[scene_node] id=shutter_glasses                 loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"   parent=cave_origin      tracker_id=dtrack_tracker tracker_ch=0
+[scene_node] id=display_main                    loc="X=0.40.0,Y=0,Z=0"                  rot="P=0,Y=0,R=0"   parent=shutter_glasses
+
+[scene_node] id=angle_left                      loc="X=0,Y=0,Z=0"                       rot="P=0,Y=-90,R=0" parent=cave_center
+[scene_node] id=angle_right                     loc="X=0,Y=0,Z=0"                       rot="P=0,Y=90,R=0"  parent=cave_center
+[scene_node] id=angle_back                      loc="X=0,Y=0,Z=0"                       rot="P=0,Y=180,R=0" parent=cave_center
+[scene_node] id=angle_floor                     loc="X=0,Y=0,Z=0"                       rot="P=-90,Y=0,R=0" parent=cave_origin
+
+[scene_node] id=display_front_upper_left        loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_upper_right       loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_lower_left        loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_lower_left        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+
+[scene_node] id=display_left_upper_left         loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_upper_right        loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_lower_left         loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_lower_right        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+
+[scene_node] id=display_right_upper_left        loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_upper_right       loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_lower_left        loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_lower_right       loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+
+[scene_node] id=display_back_upper_left         loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_upper_right        loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_lower_left         loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_lower_right        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+
+[scene_node] id=display_floor_front_upper_left  loc="X=0,Y=-1.125,Z=+1.6875"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_upper_right loc="X=0,Y=1.125,Z=+1.6875"             rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_lower_left  loc="X=0,Y=-1.125,Z=+0.9375"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_lower_right loc="X=0,Y=1.125,Z=+0.9375"             rot="P=0,Y=0,R=0"   parent=angle_floor
+
+[scene_node] id=display_floor_back_upper_left   loc="X=0,Y=-1.125,Z=-0.9375"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_upper_right  loc="X=0,Y=1.125,Z=-0.9375"             rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_lower_left   loc="X=0,Y=-1.125,Z=-1.6875"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_lower_right  loc="X=0,Y=1.125,Z=-1.6875"             rot="P=0,Y=0,R=0"   parent=angle_floor
+#####################################################################
+
+
+#####################################################################
+# List of input devices
+#******************************************************************** 
+# Input devices are VRPN devices. The nDisplay supports the following
+# types: analog, button and tracker. Many of physical input devices
+# can be connected via VRPN.
+#
+# Properties:
+# id    - nique device name
+# type  - VRPN type (analog, button or tracker).
+# addr  - address of a VRPN server which handles this particular device.
+#         The value must match the following format: DEVICENAME@SERVER_ADDRESS
+#         where DEVICENAME is a VRPN name of this device and SERVER_ADDRESS
+#         is IPv4 address of VRPN server.
+# loc   - relative location to the parent component. Location is relative
+#         to the VR root if no parent specified.
+# rot   - relative rotation to the parent component. Rotation is relative
+#         to the VR root if no parent specified.
+#
+# front (tracker only) - mapping of a tracking system axis to X axis of VR origin
+# right (tracker only) - mapping of a tracking system axis to Y axis of VR origin
+# up    (tracker only) - mapping of a tracking system axis to Z axis of VR origin
+# * The following values are allowed for axes mapping: X, -X, Y, -Y, Z, -Z
+#
+# Optional properties:
+# remap - VRPN device channel remapping. Value format is: "from0:to0,from1:to1,...,fromN:toN".
+#         For example: remap="0:3,1:4,5:2"
+#******************************************************************** 
+[input] id=dtrack_axis    type=analog  addr=DTrack2@10.0.1.29
+[input] id=dtrack_buttons type=buttons addr=DTrack2@10.0.1.29
+[input] id=dtrack_tracker type=tracker addr=DTrack2@10.0.1.29 loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" right=X up=Y front=-Z 
+#####################################################################
+
+
+#####################################################################
+# Stereoscopic settings
+#******************************************************************** 
+# Properties:
+# eye_swap - swap left and right eyes:
+#            false - L|R
+#            true  - R|L
+# eye_dist - interoccular distance in meters
+[stereo] eye_swap=True eye_dist=0.064
+#####################################################################
+
+
+#####################################################################
+# General settings
+#******************************************************************** 
+# Properties:
+# swap_sync_policy - swap synchronization policy
+#                  - 0 - no synchronization
+#                  - 1 - software swap synchronization
+#                  - 2 - NV swap lock (Nvidia cards only, OpenGL only)
+[general] swap_sync_policy=2
+#####################################################################
+
+
+#####################################################################
+# Custom arguments
+#******************************************************************** 
+# Any custom arguments available in runtime can be specified here.
+# Format:  ARG_NAME=ARG_VAL
+[custom] 
+#####################################################################
diff --git a/Content/Configurations/aixcave_infiniband.cfg b/Content/Configurations/aixcave_infiniband.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f2cb3edd0dfdb692988dfa5900bf5b6fdbcde265
--- /dev/null
+++ b/Content/Configurations/aixcave_infiniband.cfg
@@ -0,0 +1,311 @@
+#####################################################################
+# nDisplay config file
+# 
+# This file demonstrates how to configure for the AixCAVE.
+#####################################################################
+
+#####################################################################
+# List of cluster nodes 
+#******************************************************************** 
+# Cluster node is an application instance. It's allowed to use
+# multiple instances on the same PC. Sometimes its necessary.
+#
+# Properties:
+# id       - unique node name
+# addr     - network address (IPv4 only)
+# screen   - projection screen ID to use
+# viewport - viewport ID to use
+# master   - specifies if current node is master; default is 'false'
+# port_cs  - Cluster Synchronization port (required on master node only)
+# port_ss  - Swap Synchronization port (required on master node only)
+#
+# Optional properties:
+# sound    - turns on/off sound for this application instance; default is 'false'
+#******************************************************************** 
+[cluster_node] id=node_main                               addr=134.61.47.29   screen=screen_main                    viewport=vp_1000 port_cs=41001 port_ss=41002 master=true sound=true
+
+[cluster_node] id=node_front_upper_left_eye_left          addr=134.61.47.132  screen=screen_front_upper_left        viewport=vp_1200
+[cluster_node] id=node_front_upper_left_eye_right         addr=134.61.47.132  screen=screen_front_upper_left        viewport=vp_1200
+[cluster_node] id=node_front_upper_right_eye_left         addr=134.61.47.133  screen=screen_front_upper_right       viewport=vp_1200
+[cluster_node] id=node_front_upper_right_eye_right        addr=134.61.47.133  screen=screen_front_upper_right       viewport=vp_1200
+[cluster_node] id=node_front_lower_left_eye_left          addr=134.61.47.134  screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_left_eye_right         addr=134.61.47.134  screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_right_eye_left         addr=134.61.47.135  screen=screen_front_lower_left        viewport=vp_1200
+[cluster_node] id=node_front_lower_right_eye_right        addr=134.61.47.135  screen=screen_front_lower_left        viewport=vp_1200
+
+[cluster_node] id=node_left_upper_left_eye_left           addr=134.61.47.136  screen=screen_left_upper_left         viewport=vp_1200
+[cluster_node] id=node_left_upper_left_eye_right          addr=134.61.47.136  screen=screen_left_upper_left         viewport=vp_1200
+[cluster_node] id=node_left_upper_right_eye_left          addr=134.61.47.137  screen=screen_left_upper_right        viewport=vp_1200
+[cluster_node] id=node_left_upper_right_eye_right         addr=134.61.47.137  screen=screen_left_upper_right        viewport=vp_1200
+[cluster_node] id=node_left_lower_left_eye_left           addr=134.61.47.138  screen=screen_left_lower_left         viewport=vp_1200
+[cluster_node] id=node_left_lower_left_eye_right          addr=134.61.47.138  screen=screen_left_lower_left         viewport=vp_1200
+[cluster_node] id=node_left_lower_right_eye_left          addr=134.61.47.139  screen=screen_left_lower_right        viewport=vp_1200
+[cluster_node] id=node_left_lower_right_eye_right         addr=134.61.47.139  screen=screen_left_lower_right        viewport=vp_1200
+
+[cluster_node] id=node_right_upper_left_eye_left          addr=134.61.47.140  screen=screen_right_upper_left        viewport=vp_1200
+[cluster_node] id=node_right_upper_left_eye_right         addr=134.61.47.140  screen=screen_right_upper_left        viewport=vp_1200
+[cluster_node] id=node_right_upper_right_eye_left         addr=134.61.47.141  screen=screen_right_upper_right       viewport=vp_1200
+[cluster_node] id=node_right_upper_right_eye_right        addr=134.61.47.141  screen=screen_right_upper_right       viewport=vp_1200
+[cluster_node] id=node_right_lower_left_eye_left          addr=134.61.47.142  screen=screen_right_lower_left        viewport=vp_1200
+[cluster_node] id=node_right_lower_left_eye_right         addr=134.61.47.142  screen=screen_right_lower_left        viewport=vp_1200
+[cluster_node] id=node_right_lower_right_eye_left         addr=134.61.47.143  screen=screen_right_lower_right       viewport=vp_1200
+[cluster_node] id=node_right_lower_right_eye_right        addr=134.61.47.143  screen=screen_right_lower_right       viewport=vp_1200
+
+[cluster_node] id=node_back_upper_left_eye_left           addr=134.61.47.144  screen=screen_back_upper_left         viewport=vp_1200
+[cluster_node] id=node_back_upper_left_eye_right          addr=134.61.47.144  screen=screen_back_upper_left         viewport=vp_1200
+[cluster_node] id=node_back_upper_right_eye_left          addr=134.61.47.145  screen=screen_back_upper_right        viewport=vp_1200
+[cluster_node] id=node_back_upper_right_eye_right         addr=134.61.47.145  screen=screen_back_upper_right        viewport=vp_1200
+[cluster_node] id=node_back_lower_left_eye_left           addr=134.61.47.146  screen=screen_back_lower_left         viewport=vp_1200
+[cluster_node] id=node_back_lower_left_eye_right          addr=134.61.47.146  screen=screen_back_lower_left         viewport=vp_1200
+[cluster_node] id=node_back_lower_right_eye_left          addr=134.61.47.147  screen=screen_back_lower_right        viewport=vp_1200
+[cluster_node] id=node_back_lower_right_eye_right         addr=134.61.47.147  screen=screen_back_lower_right        viewport=vp_1200
+
+[cluster_node] id=node_floor_front_upper_left_eye_left    addr=134.61.47.148  screen=screen_floor_front_upper_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_left_eye_right   addr=134.61.47.148  screen=screen_floor_front_upper_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_right_eye_left   addr=134.61.47.150  screen=screen_floor_front_upper_right viewport=vp_1200
+[cluster_node] id=node_floor_front_upper_right_eye_right  addr=134.61.47.150  screen=screen_floor_front_upper_right viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_left_eye_left    addr=134.61.47.149  screen=screen_floor_front_lower_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_left_eye_right   addr=134.61.47.149  screen=screen_floor_front_lower_left  viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_right_eye_left   addr=134.61.47.151  screen=screen_floor_front_lower_right viewport=vp_1200
+[cluster_node] id=node_floor_front_lower_right_eye_right  addr=134.61.47.151  screen=screen_floor_front_lower_right viewport=vp_1200
+
+[cluster_node] id=node_floor_back_upper_left_eye_left     addr=134.61.47.152  screen=screen_floor_back_upper_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_left_eye_right    addr=134.61.47.152  screen=screen_floor_back_upper_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_right_eye_left    addr=134.61.47.154  screen=screen_floor_back_upper_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_upper_right_eye_right   addr=134.61.47.154  screen=screen_floor_back_upper_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_left_eye_left     addr=134.61.47.153  screen=screen_floor_back_lower_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_left_eye_right    addr=134.61.47.153  screen=screen_floor_back_lower_left   viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_right_eye_left    addr=134.61.47.155  screen=screen_floor_back_lower_right  viewport=vp_1200
+[cluster_node] id=node_floor_back_lower_right_eye_right   addr=134.61.47.155  screen=screen_floor_back_lower_right  viewport=vp_1200
+#####################################################################
+
+
+#####################################################################
+# List of projection screens
+#******************************************************************** 
+# Projection screen is a rectangle which determines the camera frustum.
+# Usually the projection screen has the same dimensions as an output
+# display but in some cases it may differ.
+#
+# Properties:
+# id     - unique projection screen name
+# loc    - relative location to the parent component. Location is relative
+#          to the VR root if no parent specified. The pivot is a screen's
+#          center and the values are in meters.
+# rot    - relative rotation to the parent component. Rotation is relative
+#          to the VR root if no parent specified. The pivot is a screen's
+#          center and the values are in degrees.
+# size   - width (X) and height (Y) of the screen. Values are in meters.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[screen] id=screen_main                    loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=0.433333,Y=0.270833" parent=display_main
+[screen] id=screen_front_upper_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_upper_left
+[screen] id=screen_front_upper_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_upper_right 
+[screen] id=screen_front_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_lower_left 
+[screen] id=screen_front_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_front_lower_left
+[screen] id=screen_left_upper_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_upper_left
+[screen] id=screen_left_upper_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_upper_right 
+[screen] id=screen_left_lower_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_lower_left 
+[screen] id=screen_left_lower_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_left_lower_right
+[screen] id=screen_right_upper_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_upper_left
+[screen] id=screen_right_upper_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_upper_right 
+[screen] id=screen_right_lower_left        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_lower_left 
+[screen] id=screen_right_lower_right       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_right_lower_right
+[screen] id=screen_back_upper_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_upper_left
+[screen] id=screen_back_upper_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_upper_right 
+[screen] id=screen_back_lower_left         loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_lower_left 
+[screen] id=screen_back_lower_right        loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285"  parent=display_back_lower_right
+[screen] id=screen_floor_front_upper_left  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_upper_left
+[screen] id=screen_floor_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_upper_right 
+[screen] id=screen_floor_front_lower_left  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_lower_left 
+[screen] id=screen_floor_front_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_front_lower_right
+[screen] id=screen_floor_back_upper_left   loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_upper_left
+[screen] id=screen_floor_back_upper_right  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_upper_right 
+[screen] id=screen_floor_back_lower_left   loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_lower_left
+[screen] id=screen_floor_back_lower_right  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875"           parent=display_floor_back_lower_right
+###############################################################
+
+
+#####################################################################
+# List of viewport configurations 
+#******************************************************************** 
+# Viewport is a rectangle area of game window where rendered frame is
+# mapped. Usually the viewport starts at 0:0 and has the same size as
+# its parent window but in some cases these settings may differ.
+#
+# Properties:
+# id     - unique viewport name
+# x      - X coordinate of viewport's top left corner
+# y      - Y coordinate of viewport's top left corner
+# width  - width of viewport in pixels
+# height - height of viewport in pixels
+#
+# Optional properties:
+# flip_h - flip image horizontally; default is 'false'
+# flip_v - flip image vertically; default is 'false'
+#******************************************************************** 
+[viewport] id=vp_1000 x=0 y=0 width=1600 height=1000 flip_h=False flip_v=False
+[viewport] id=vp_1200 x=0 y=0 width=1920 height=1200 flip_h=False flip_v=False
+#####################################################################
+
+
+#####################################################################
+# List of cameras 
+#******************************************************************** 
+# Camera is a predefined point frome where the stereoscopic view built.
+# It's possible to define multiple cameras and swith the active one
+# during runtime. You're free to attach any camera to a tracking device
+# for head tracking. Consider a camera as a viewer's head.
+#
+# Properties:
+# id  - unique camera name
+# loc - relative location to the parent component. Location is relative
+#       to the VR root if no parent specified.
+# rot - relative rotation to the parent component. Rotation is relative
+#       to the VR root if no parent specified.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[camera] id=camera_dynamic loc="X=0,Y=0,Z=0" parent=shutter_glasses
+#####################################################################
+
+
+#####################################################################
+# List of scene nodes nodes (hierarchy transforms) 
+#******************************************************************** 
+# Scene node is an actor component which is basically a transformation
+# matrix. Scene nodes can be helpful to build a component hierarchy, to
+# define some special places (like a socket) within VR space.
+#
+# It might be difficult to understand what VR space origin is. Consider
+# it as a point in space where VR space starts. Any componenent listed
+# in this config file is relative to its parent or this origin.
+#
+# Properties:
+# id  - unique scene node name
+# loc - relative location to the parent component. Location is relative
+#       to the VR root if no parent specified.
+# rot - relative rotation to the parent component. Rotation is relative
+#       to the VR root if no parent specified.
+#
+# Optional properties:
+# parent     - ID of parent component in VR hierarchy; default is VR root.
+# tracker_id - ID of tracking device; no tracking by default.
+# tracker_ch - ID of tracking device's channel; no tracking by default.
+#******************************************************************** 
+[scene_node] id=cave_origin                     loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"
+[scene_node] id=cave_center                     loc="X=0,Y=0,Z=1.65"                    rot="P=0,Y=0,R=0"   parent=cave_origin
+
+[scene_node] id=flystick                        loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"   parent=cave_origin      tracker_id=DTrackTracker tracker_ch=7
+[scene_node] id=shutter_glasses                 loc="X=0,Y=0,Z=0"                       rot="P=0,Y=0,R=0"   parent=cave_origin      tracker_id=DTrackTracker tracker_ch=0
+[scene_node] id=display_main                    loc="X=0.40.0,Y=0,Z=0"                  rot="P=0,Y=0,R=0"   parent=shutter_glasses
+
+[scene_node] id=angle_left                      loc="X=0,Y=0,Z=0"                       rot="P=0,Y=-90,R=0" parent=cave_center
+[scene_node] id=angle_right                     loc="X=0,Y=0,Z=0"                       rot="P=0,Y=90,R=0"  parent=cave_center
+[scene_node] id=angle_back                      loc="X=0,Y=0,Z=0"                       rot="P=0,Y=180,R=0" parent=cave_center
+[scene_node] id=angle_floor                     loc="X=0,Y=0,Z=0"                       rot="P=-90,Y=0,R=0" parent=cave_origin
+
+[scene_node] id=display_front_upper_left        loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_upper_right       loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_lower_left        loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+[scene_node] id=display_front_lower_left        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=cave_center
+
+[scene_node] id=display_left_upper_left         loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_upper_right        loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_lower_left         loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+[scene_node] id=display_left_lower_right        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_left
+
+[scene_node] id=display_right_upper_left        loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_upper_right       loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_lower_left        loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+[scene_node] id=display_right_lower_right       loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_right
+
+[scene_node] id=display_back_upper_left         loc="X=2.625,Y=-1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_upper_right        loc="X=2.625,Y=+1.053575,Z=+0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_lower_left         loc="X=2.625,Y=-1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+[scene_node] id=display_back_lower_right        loc="X=2.625,Y=+1.053575,Z=-0.6678575"  rot="P=0,Y=0,R=0"   parent=angle_back
+
+[scene_node] id=display_floor_front_upper_left  loc="X=0,Y=-1.125,Z=+1.6875"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_upper_right loc="X=0,Y=1.125,Z=+1.6875"             rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_lower_left  loc="X=0,Y=-1.125,Z=+0.9375"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_front_lower_right loc="X=0,Y=1.125,Z=+0.9375"             rot="P=0,Y=0,R=0"   parent=angle_floor
+
+[scene_node] id=display_floor_back_upper_left   loc="X=0,Y=-1.125,Z=-0.9375"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_upper_right  loc="X=0,Y=1.125,Z=-0.9375"             rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_lower_left   loc="X=0,Y=-1.125,Z=-1.6875"            rot="P=0,Y=0,R=0"   parent=angle_floor
+[scene_node] id=display_floor_back_lower_right  loc="X=0,Y=1.125,Z=-1.6875"             rot="P=0,Y=0,R=0"   parent=angle_floor
+#####################################################################
+
+
+#####################################################################
+# List of input devices
+#******************************************************************** 
+# Input devices are VRPN devices. The nDisplay supports the following
+# types: analog, button and tracker. Many of physical input devices
+# can be connected via VRPN.
+#
+# Properties:
+# id    - nique device name
+# type  - VRPN type (analog, button or tracker).
+# addr  - address of a VRPN server which handles this particular device.
+#         The value must match the following format: DEVICENAME@SERVER_ADDRESS
+#         where DEVICENAME is a VRPN name of this device and SERVER_ADDRESS
+#         is IPv4 address of VRPN server.
+# loc   - relative location to the parent component. Location is relative
+#         to the VR root if no parent specified.
+# rot   - relative rotation to the parent component. Rotation is relative
+#         to the VR root if no parent specified.
+#
+# front (tracker only) - mapping of a tracking system axis to X axis of VR origin
+# right (tracker only) - mapping of a tracking system axis to Y axis of VR origin
+# up    (tracker only) - mapping of a tracking system axis to Z axis of VR origin
+# * The following values are allowed for axes mapping: X, -X, Y, -Y, Z, -Z
+#
+# Optional properties:
+# remap - VRPN device channel remapping. Value format is: "from0:to0,from1:to1,...,fromN:toN".
+#         For example: remap="0:3,1:4,5:2"
+#******************************************************************** 
+[input] id=DTrackAxis    type=analog  addr=DTrack2@10.0.1.29
+[input] id=DTrackButtons type=buttons addr=DTrack2@10.0.1.29
+[input] id=DTrackTracker type=tracker addr=DTrack2@10.0.1.29 loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" right=X up=Y front=-Z 
+#####################################################################
+
+
+#####################################################################
+# Stereoscopic settings
+#******************************************************************** 
+# Properties:
+# eye_swap - swap left and right eyes:
+#            false - L|R
+#            true  - R|L
+# eye_dist - interoccular distance in meters
+[stereo] eye_swap=True eye_dist=0.064
+#####################################################################
+
+
+#####################################################################
+# General settings
+#******************************************************************** 
+# Properties:
+# swap_sync_policy - swap synchronization policy
+#                  - 0 - no synchronization
+#                  - 1 - software swap synchronization
+#                  - 2 - NV swap lock (Nvidia cards only, OpenGL only)
+[general] swap_sync_policy=2
+#####################################################################
+
+
+#####################################################################
+# Custom arguments
+#******************************************************************** 
+# Any custom arguments available in runtime can be specified here.
+# Format:  ARG_NAME=ARG_VAL
+[custom] 
+#####################################################################
diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp
index 270e3f17e86eca27e4a5ce3d22b4901766d7762c..b55f5209b7be33e4305a19e0a81cac174493f1d4 100644
--- a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp
+++ b/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp
@@ -144,10 +144,10 @@ void ADisplayClusterPawnBase::SetupPlayerInputComponent(UInputComponent* PlayerI
 	Super::SetupPlayerInputComponent(PlayerInputComponent);
 	if (PlayerInputComponent)
 	{
-		PlayerInputComponent->BindAxis("MoveForward", this, &ADisplayClusterPawnBase::MoveForward );
-		PlayerInputComponent->BindAxis("MoveRight"  , this, &ADisplayClusterPawnBase::MoveRight   );
-		PlayerInputComponent->BindAxis("MoveUp"     , this, &ADisplayClusterPawnBase::MoveUp      );
-		PlayerInputComponent->BindAxis("TurnRate"   , this, &ADisplayClusterPawnBase::TurnAtRate2 );
-		PlayerInputComponent->BindAxis("LookUpRate" , this, &ADisplayClusterPawnBase::LookUpAtRate);
+    PlayerInputComponent->BindAxis("MoveForward", this, &ADisplayClusterPawnBase::MoveForward );
+    PlayerInputComponent->BindAxis("MoveRight"  , this, &ADisplayClusterPawnBase::MoveRight   );
+    PlayerInputComponent->BindAxis("MoveUp"     , this, &ADisplayClusterPawnBase::MoveUp      );
+    PlayerInputComponent->BindAxis("TurnRate"   , this, &ADisplayClusterPawnBase::TurnAtRate2 );
+    PlayerInputComponent->BindAxis("LookUpRate" , this, &ADisplayClusterPawnBase::LookUpAtRate);
 	}
 }
diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp
index 9b68ab1dbbe84e253fd2c0aae0bbef77a89c99b9..7ec14b842f6712634895bd9f1607ee4ea3086bd0 100644
--- a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp
+++ b/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp
@@ -1,16 +1,54 @@
 #include "DisplayClusterPawnCAVE.h"
 
+#include "Cluster/IDisplayClusterClusterManager.h"
 #include "Game/IDisplayClusterGameManager.h"
+#include "Input/IDisplayClusterInputManager.h"
 #include "IDisplayCluster.h"
 
-void ADisplayClusterPawnCAVE::BeginPlay()
+void ADisplayClusterPawnCAVE::OnAxisEvent_Implementation   (FVector2D Value       )
 {
-  Super::BeginPlay();
-  Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById("flystick");
+  if (!IDisplayCluster::Get().GetClusterMgr()->IsMaster()) return;
+  AddMovementInput(Flystick->GetRightVector  (), Value[0]);
+  AddMovementInput(Flystick->GetForwardVector(), Value[1]);
 }
-void ADisplayClusterPawnCAVE::MoveForward(float Value)
+void ADisplayClusterPawnCAVE::OnTriggerEvent_Implementation(bool      Pressed     ) 
 {
-  if (!Flystick)
-    Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById("flystick");
-  Flystick ? AddMovementInput(Flystick->GetForwardVector(), Value) : Super::MoveForward(Value);
+
+}
+void ADisplayClusterPawnCAVE::OnButtonEvent_Implementation (bool      Pressed     , int32 Index) 
+{
+
+}
+
+void ADisplayClusterPawnCAVE::Tick                         (float     DeltaSeconds)
+{
+  // Due to these declarations, this class is bound to aixcave.cfg.
+  static const auto flystick_name = FString(TEXT("flystick"      ));
+  static const auto axis_name     = FString(TEXT("dtrack_axis"   ));
+  static const auto buttons_name  = FString(TEXT("dtrack_buttons"));
+
+	Super::Tick(DeltaSeconds);
+
+  if (!Flystick) Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById(flystick_name);
+  if (!Flystick) return;
+
+  FVector2D Axes;
+  IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 0, Axes[0]);
+  IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 1, Axes[1]);
+  if (Axes[0] != 0.0f || Axes[1] != 0.0f) OnAxisEvent_Implementation(Axes);
+
+  bool TriggerPressed = false, TriggerReleased = false;
+  IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, 0, TriggerPressed );
+  IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, 0, TriggerReleased);
+  if (TriggerPressed ) OnTriggerEvent_Implementation(true );
+  if (TriggerReleased) OnTriggerEvent_Implementation(false);
+  
+  for (auto i = 1; i < 6; ++i)
+  {
+    bool ButtonPressed = false, ButtonReleased = false;
+    IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, i, ButtonPressed );
+    IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, i, ButtonReleased);
+    if (ButtonPressed ) OnButtonEvent_Implementation(true , i);
+    if (ButtonReleased) OnButtonEvent_Implementation(false, i);
+  }
 }
diff --git a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp b/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp
index 8b2d5aadf5dd4a4a3f1d9405205cc4f530ac3b9c..aa70c4ae1fbf68dbd65102a8437bb21bd3557df6 100644
--- a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp
+++ b/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp
@@ -2,7 +2,7 @@
 
 #define LOCTEXT_NAMESPACE "FnDisplayExtensionsModule"
 
-void FnDisplayExtensionsModule::StartupModule()
+void FnDisplayExtensionsModule::StartupModule ()
 {
 
 }
diff --git a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h b/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h
index 2c68f15d371f05d18fb4f6fc97196b3e772fe0b6..34d1ed7fbd5eeb78a93e41f2ac7418e51cd7064a 100644
--- a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h
+++ b/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h
@@ -2,6 +2,7 @@
 
 #include "CoreMinimal.h"
 #include "DisplayClusterGameMode.h"
+
 #include "DisplayClusterGameModeCAVE.generated.h"
 
 UCLASS()
diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h
index 5eb76f52ff42409c369b56f14f3ff7f3e0403217..9cdc7a1f036a47ca730948d76462817c1b3879ea 100644
--- a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h
+++ b/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h
@@ -6,6 +6,7 @@
 #include "GameFramework/RotatingMovementComponent.h"
 #include "CoreMinimal.h"
 #include "DisplayClusterPawn.h"
+
 #include "DisplayClusterPawnBase.generated.h"
 
 UCLASS()
diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h
index 99bd5b796542b073f911e0350219800c13a012ff..e60cf9540616bf689b9f400acd8fce905898621c 100644
--- a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h
+++ b/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h
@@ -3,6 +3,7 @@
 #include "CoreMinimal.h"
 #include "DisplayClusterPawnBase.h"
 #include "DisplayClusterSceneComponent.h"
+
 #include "DisplayClusterPawnCAVE.generated.h"
 
 UCLASS()
@@ -11,9 +12,12 @@ class NDISPLAYEXTENSIONS_API ADisplayClusterPawnCAVE : public ADisplayClusterPaw
   GENERATED_BODY()
 
 public:
-  virtual void BeginPlay() override;
-  virtual void MoveForward(float Value) override;
+  UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnAxisEvent   (FVector2D Value  );
+  UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnButtonEvent (bool      Pressed, int32 Index);
+  UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnTriggerEvent(bool      Pressed);
+  
+protected:
+  virtual void Tick (float DeltaSeconds) override;
 
-  UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Pawn")
   UDisplayClusterSceneComponent* Flystick = nullptr;
 };
diff --git a/Source/nDisplayExtensions/Public/nDisplayExtensions.h b/Source/nDisplayExtensions/Public/nDisplayExtensions.h
index d5e9096991ad70694240b1ce329f2222ba2456cb..275de5791b5de51cbd5d31f76abeb60f0e953b2a 100644
--- a/Source/nDisplayExtensions/Public/nDisplayExtensions.h
+++ b/Source/nDisplayExtensions/Public/nDisplayExtensions.h
@@ -6,6 +6,6 @@
 class NDISPLAYEXTENSIONS_API FnDisplayExtensionsModule : public IModuleInterface
 {
 public:
-  virtual void StartupModule() override;
+  virtual void StartupModule () override;
   virtual void ShutdownModule() override;
 };