Index: kernel/generic/include/lib/objc.h
===================================================================
--- kernel/generic/include/lib/objc.h	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/include/lib/objc.h	(revision bea09de6fa613b688ac7cad04e20e544a8e4c668)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2006 Martin Decky
+ * Copyright (c) 2007 Martin Decky
  * All rights reserved.
  *
@@ -36,29 +36,15 @@
 #define KERN_OBJC_H_
 
-#include <arch/types.h>
-#include <arch/arg.h>
+extern id class_create_instance(Class _class);
+extern id object_dispose(id object);
 
-extern void *stderr;
+@interface base_t {
+    Class isa;
+}
 
-extern void __assert_fail(const char *assertion, const char *file, unsigned int line, const char *function);
-extern void abort(void);
++ (id) new;
+- (id) free;
 
-extern void *fopen(const char *path, const char *mode);
-extern size_t fread(void *ptr, size_t size, size_t nmemb, void *stream);
-extern size_t fwrite(const void *ptr, size_t size, size_t nmemb, void *stream);
-extern int fflush(void *stream);
-extern int feof(void *stream);
-extern int fclose(void *stream);
-
-extern int vfprintf(void *stream, const char *format, va_list ap);
-extern int sscanf(const char *str, const char *format, ...);
-extern const unsigned short **__ctype_b_loc(void);
-extern long int __strtol_internal(const char *__nptr, char **__endptr, int __base, int __group);
-
-extern void *memset(void *s, int c, size_t n);
-extern void *calloc(size_t nmemb, size_t size);
+@end
 
 #endif
-
-/** @}
- */
Index: kernel/generic/include/lib/objc_ext.h
===================================================================
--- kernel/generic/include/lib/objc_ext.h	(revision bea09de6fa613b688ac7cad04e20e544a8e4c668)
+++ kernel/generic/include/lib/objc_ext.h	(revision bea09de6fa613b688ac7cad04e20e544a8e4c668)
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2007 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup generic	
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KERN_OBJC_EXT_H_
+#define KERN_OBJC_EXT_H_
+
+#include <arch/types.h>
+#include <arch/arg.h>
+
+extern void *stderr;
+
+extern void __assert_fail(const char *assertion, const char *file, unsigned int line, const char *function);
+extern void abort(void);
+
+extern void *fopen(const char *path, const char *mode);
+extern size_t fread(void *ptr, size_t size, size_t nmemb, void *stream);
+extern size_t fwrite(const void *ptr, size_t size, size_t nmemb, void *stream);
+extern int fflush(void *stream);
+extern int feof(void *stream);
+extern int fclose(void *stream);
+
+extern int vfprintf(void *stream, const char *format, va_list ap);
+extern int sscanf(const char *str, const char *format, ...);
+extern const unsigned short **__ctype_b_loc(void);
+extern long int __strtol_internal(const char *__nptr, char **__endptr, int __base, int __group);
+
+extern void *memset(void *s, int c, size_t n);
+extern void *calloc(size_t nmemb, size_t size);
+
+#endif
+
+/** @}
+ */
Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/include/mm/as.h	(revision bea09de6fa613b688ac7cad04e20e544a8e4c668)
@@ -54,4 +54,8 @@
 #include <lib/elf.h>
 
+#ifdef __OBJC__
+#include <lib/objc.h>
+#endif
+
 /**
  * Defined to be true if user address space and kernel address space shadow each
@@ -82,5 +86,5 @@
 
 #ifdef __OBJC__
-@interface as_t {
+@interface as_t : base_t {
 	@public
 		/** Protected by asidlock. */
@@ -110,8 +114,10 @@
 		as_arch_t arch;
 }
+
 + (pte_t *) page_table_create: (int) flags;
 + (void) page_table_destroy: (pte_t *) page_table;
 - (void) page_table_lock: (bool) _lock;
 - (void) page_table_unlock: (bool) unlock;
+
 @end
 
