public override void OnInspectorGUI()
	{
	    if (_geoSync == null)
	    {
		AcquireTarget();
	    }

	    SetupUI();

	    using (new EditorGUILayout.VerticalScope())
	    {
		bool bSyncing = _geoSync._syncing;

		EditorGUILayout.LabelField(_fileLabelContent);

		using (new EditorGUILayout.HorizontalScope())
		{
		    _geoSync._filePath = EditorGUILayout.DelayedTextField(_geoSync._filePath);

		    // TODO: add field for output cache directory

		    GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0);
		    if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18)))
		    {
			string filePattern = "*.bgeo;*.bgeo.sc";
			_geoSync._filePath = EditorUtility.OpenFilePanel("Select File", _geoSync._filePath, filePattern);
		    }
		}

		HEU_EditorUI.DrawSeparator();

		if (bSyncing)
		{
		    EditorGUILayout.LabelField(_statusSyncContent);

		    if (GUILayout.Button(_stopContent))
		    {
			_geoSync.StopSync();
		    }
		}
		else
		{
		    EditorGUILayout.LabelField(_statusIdleContent);

		    using (new EditorGUILayout.HorizontalScope())
		    {
			bool bLoaded = _geoSync.IsLoaded();

			if (GUILayout.Button(_syncContent))
			{
			    _geoSync.ClearLog();
			    _geoSync.Resync();
			}

			//GUILayout.FlexibleSpace();

			using (new EditorGUI.DisabledScope(!bLoaded))
			{
			    if (GUILayout.Button(_unloadContent))
			    {
				_geoSync.Unload();
			    }
			}
		    }

		    HEU_EditorUI.DrawSeparator();

		    using (new EditorGUILayout.HorizontalScope())
		    {
			bool bLoaded = _geoSync.IsLoaded();

			using (new EditorGUI.DisabledScope(!bLoaded))
			{
			    if (GUILayout.Button(_bakeContent))
			    {
				_geoSync.Bake();
			    }
			}
		    }

		}

		if (_outputLogUIComponent != null &&_geoSync._log != null)
		{
		    _outputLogUIComponent.OnGUI(_geoSync._log.ToString());
		}
	    }
	}