So you see I was thinking backwards. The engine is composed of all of these items and using this hierarchy it should eliminate access problems. The HWND and HINSTANCE are first passed to the DXEngine constructor by the user and then those are passed on or can be accessed via DXEngine. DXSound and DXInput either need one or both of these variables prior to being able to function.