diff --git a/gi/_glib/__init__.py b/gi/_glib/__init__.py
index 145685e..62ff59e 100644
--- a/gi/_glib/__init__.py
+++ b/gi/_glib/__init__.py
@@ -32,19 +32,6 @@ OptionGroup = _glib.OptionGroup
 Pid = _glib.Pid
 PollFD = _glib.PollFD
 
-OPTION_ERROR = _glib.OPTION_ERROR
-OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
-OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
-OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
-OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
-OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
-OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
-OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
-OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
-OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
-OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
-OPTION_REMAINING = _glib.OPTION_REMAINING
-
 # Functions
 child_watch_add = _glib.child_watch_add
 filename_from_utf8 = _glib.filename_from_utf8
diff --git a/gi/_glib/glibmodule.c b/gi/_glib/glibmodule.c
index 1513748..fa54525 100644
--- a/gi/_glib/glibmodule.c
+++ b/gi/_glib/glibmodule.c
@@ -385,42 +385,10 @@ pyglib_register_version_tuples(PyObject *d)
     Py_DECREF(o);
 }
 
-static void
-pyglib_register_constants(PyObject *m)
-{
-    PyModule_AddIntConstant(m, "OPTION_FLAG_HIDDEN",
-			    G_OPTION_FLAG_HIDDEN);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_IN_MAIN",
-			    G_OPTION_FLAG_IN_MAIN);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_REVERSE",
-			    G_OPTION_FLAG_REVERSE);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_NO_ARG",
-			    G_OPTION_FLAG_NO_ARG);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_FILENAME",
-			    G_OPTION_FLAG_FILENAME);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_OPTIONAL_ARG",
-			    G_OPTION_FLAG_OPTIONAL_ARG);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_NOALIAS",
-			    G_OPTION_FLAG_NOALIAS); 
-
-    PyModule_AddIntConstant(m, "OPTION_ERROR_UNKNOWN_OPTION",
-			    G_OPTION_ERROR_UNKNOWN_OPTION);
-    PyModule_AddIntConstant(m, "OPTION_ERROR_BAD_VALUE",
-			    G_OPTION_ERROR_BAD_VALUE);
-    PyModule_AddIntConstant(m, "OPTION_ERROR_FAILED",
-			    G_OPTION_ERROR_FAILED);
- 
-    PyModule_AddStringConstant(m, "OPTION_REMAINING",
-			       G_OPTION_REMAINING);
-    PyModule_AddStringConstant(m, "OPTION_ERROR",
-			       (char*) g_quark_to_string(G_OPTION_ERROR));
-}
-
 PYGLIB_MODULE_START(_glib, "_glib")
 {
     PyObject *d = PyModule_GetDict(module);
 
-    pyglib_register_constants(module);
     pyglib_register_api(d);
     pyglib_register_error(d);
     pyglib_register_version_tuples(d);
diff --git a/gi/_glib/option.py b/gi/_glib/option.py
index afc13ac..16b2e49 100644
--- a/gi/_glib/option.py
+++ b/gi/_glib/option.py
@@ -41,9 +41,7 @@ else:
     _basestring = basestring
     _bytes = str
 
-import gi._glib
-gi  # pyflakes
-_glib = sys.modules['gi._glib._glib']
+from gi.repository import GLib
 
 __all__ = [
     "OptParseError",
@@ -92,7 +90,7 @@ class Option(optparse.Option):
         'optional_arg',
     ]
 
-    REMAINING = '--' + _glib.OPTION_REMAINING
+    REMAINING = '--' + GLib.OPTION_REMAINING
 
     def __init__(self, *args, **kwargs):
         optparse.Option.__init__(self, *args, **kwargs)
@@ -118,19 +116,19 @@ class Option(optparse.Option):
         flags = 0
 
         if self.hidden:
-            flags |= _glib.OPTION_FLAG_HIDDEN
+            flags |= GLib.OptionFlags.HIDDEN
 
         if self.in_main:
-            flags |= _glib.OPTION_FLAG_IN_MAIN
+            flags |= GLib.OptionFlags.IN_MAIN
 
         if self.takes_value():
             if self.optional_arg:
-                flags |= _glib.OPTION_FLAG_OPTIONAL_ARG
+                flags |= GLib.OptionFlags.OPTIONAL_ARG
         else:
-            flags |= _glib.OPTION_FLAG_NO_ARG
+            flags |= GLib.OptionFlags.NO_ARG
 
         if self.type == 'filename':
-            flags |= _glib.OPTION_FLAG_FILENAME
+            flags |= GLib.OptionFlags.FILENAME
 
         for (long_name, short_name) in zip(self._long_opts, self._short_opts):
             yield (long_name[2:], _bytes(short_name[1]), flags, self.help, self.metavar)
@@ -194,14 +192,14 @@ class OptionGroup(optparse.OptionGroup):
                 opt.process(option_name, option_value, self.values, parser)
             except OptionValueError:
                 error = sys.exc_info()[1]
-                gerror = _glib.GError(str(error))
-                gerror.domain = _glib.OPTION_ERROR
-                gerror.code = _glib.OPTION_ERROR_BAD_VALUE
+                gerror = GLib.GError(str(error))
+                gerror.domain = GLib.option_error_quark()
+                gerror.code = GLib.OptionError.BAD_VALUE
                 gerror.message = str(error)
                 raise gerror
 
-        group = _glib.OptionGroup(self.name, self.description,
-                                  self.help_description, callback)
+        group = GLib.OptionGroup(self.name, self.description,
+                                 self.help_description, callback)
         if self.translation_domain:
             group.set_translation_domain(self.translation_domain)
 
@@ -275,12 +273,12 @@ class OptionParser(optparse.OptionParser):
             parameter_string = self.usage + " - " + self.description
         else:
             parameter_string = self.usage
-        context = _glib.OptionContext(parameter_string)
+        context = GLib.OptionContext(parameter_string)
         context.set_help_enabled(self.help_enabled)
         context.set_ignore_unknown_options(self.ignore_unknown_options)
 
         for option_group in self.option_groups:
-            if isinstance(option_group, _glib.OptionGroup):
+            if isinstance(option_group, GLib.OptionGroup):
                 g_group = option_group
             else:
                 g_group = option_group.get_option_group(self)
@@ -293,7 +291,7 @@ class OptionParser(optparse.OptionParser):
                 opt = self._short_opt[option_name]
             opt.process(option_name, option_value, values, self)
 
-        main_group = _glib.OptionGroup(None, None, None, callback)
+        main_group = GLib.OptionGroup(None, None, None, callback)
         main_entries = []
         for option in self.option_list:
             main_entries.extend(option._to_goptionentries())
@@ -313,7 +311,7 @@ class OptionParser(optparse.OptionParser):
                     args[0].parser = self
                 if args[0].parser is not self:
                     raise ValueError("invalid OptionGroup (wrong parser)")
-            if isinstance(args[0], _glib.OptionGroup):
+            if isinstance(args[0], GLib.OptionGroup):
                 self.option_groups.append(args[0])
                 return
         optparse.OptionParser.add_option_group(self, *args, **kwargs)
@@ -338,15 +336,15 @@ class OptionParser(optparse.OptionParser):
         try:
             options, args = optparse.OptionParser.parse_args(
                 self, args, values)
-        except _glib.GError:
+        except GLib.GError:
             error = sys.exc_info()[1]
-            if error.domain != _glib.OPTION_ERROR:
+            if error.domain != GLib.option_error_quark():
                 raise
-            if error.code == _glib.OPTION_ERROR_BAD_VALUE:
+            if error.code == GLib.OptionError.BAD_VALUE:
                 raise OptionValueError(error.message)
-            elif error.code == _glib.OPTION_ERROR_UNKNOWN_OPTION:
+            elif error.code == GLib.OptionError.UNKNOWN_OPTION:
                 raise BadOptionError(error.message)
-            elif error.code == _glib.OPTION_ERROR_FAILED:
+            elif error.code == GLib.OptionError.FAILED:
                 raise OptParseError(error.message)
             else:
                 raise
diff --git a/gi/_gobject/__init__.py b/gi/_gobject/__init__.py
index 50a130f..ac10ef6 100644
--- a/gi/_gobject/__init__.py
+++ b/gi/_gobject/__init__.py
@@ -93,19 +93,6 @@ IOChannel = _glib.IOChannel
 OptionGroup = _glib.OptionGroup
 OptionContext = _glib.OptionContext
 
-OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
-OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
-OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
-OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
-OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
-OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
-OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
-OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
-OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
-OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
-OPTION_REMAINING = _glib.OPTION_REMAINING
-OPTION_ERROR = _glib.OPTION_ERROR
-
 TYPE_NONE = constants.TYPE_NONE
 TYPE_INTERFACE = constants.TYPE_INTERFACE
 TYPE_CHAR = constants.TYPE_CHAR
@@ -165,9 +152,6 @@ Property = propertyhelper.Property
 Signal = signalhelper.Signal
 SignalOverride = signalhelper.SignalOverride
 
-from .._glib import option
-sys.modules['gi._gobject.option'] = option
-
 
 class GObjectMeta(type):
     "Metaclass for automatically registering GObject classes"
diff --git a/gi/overrides/GLib.py b/gi/overrides/GLib.py
index b4d74be..55d8700 100644
--- a/gi/overrides/GLib.py
+++ b/gi/overrides/GLib.py
@@ -29,6 +29,9 @@ GLib = modules['GLib']._introspection_module
 
 __all__ = []
 
+from gi._glib import option 
+__all__.append('option')
+
 
 class _VariantCreator(object):
 
