Index: kernel/genarch/include/kbd/i8042.h
===================================================================
--- kernel/genarch/include/kbd/i8042.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/kbd/i8042.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,5 +36,5 @@
 #define KERN_I8042_H_
 
-#include <typedefs.h>
+#include <console/chardev.h>
 
 extern void i8042_init(devno_t kbd_devno, inr_t kbd_inr, devno_t mouse_devno, inr_t mouse_inr);
Index: kernel/genarch/include/kbd/key.h
===================================================================
--- kernel/genarch/include/kbd/key.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/kbd/key.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,5 +38,5 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
+#include <console/chardev.h>
 
 #define KEY_RELEASE     0x80
Index: kernel/genarch/include/kbd/ns16550.h
===================================================================
--- kernel/genarch/include/kbd/ns16550.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/kbd/ns16550.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,6 +38,6 @@
 #define KERN_NS16550_H_
 
-#include <typedefs.h>
-#include <ddi/irq.h>
+#include <console/chardev.h> 
+#include <ipc/irq.h>
 
 extern void ns16550_init(devno_t devno, inr_t inr, uintptr_t vaddr);
Index: kernel/genarch/include/kbd/z8530.h
===================================================================
--- kernel/genarch/include/kbd/z8530.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/kbd/z8530.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -38,6 +38,6 @@
 #define KERN_Z8530_H_
 
-#include <typedefs.h>
-#include <ddi/irq.h>
+#include <console/chardev.h>
+#include <ipc/irq.h>
 
 extern bool z8530_belongs_to_kernel;
Index: kernel/genarch/include/mm/as_ht.h
===================================================================
--- kernel/genarch/include/mm/as_ht.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/mm/as_ht.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,7 +36,53 @@
 #define KERN_AS_HT_H_
 
-#include <mm/as.h>
+#include <mm/mm.h>
+#include <arch/mm/asid.h>
+#include <adt/list.h>
+#include <adt/btree.h>
+#include <synch/mutex.h>
 
-extern as_operations_t as_ht_operations;
+/** Address space structure.
+ *
+ * as_t contains the list of as_areas of userspace accessible
+ * pages for one or more tasks. Ranges of kernel memory pages are not
+ * supposed to figure in the list as they are shared by all tasks and
+ * set up during system initialization.
+ */
+typedef struct {
+	/** Protected by asidlock. */
+	link_t inactive_as_with_asid_link;
+
+	mutex_t lock;
+
+	/** Number of references (i.e tasks that reference this as). */
+	count_t refcount;
+
+	/** Number of processors on wich is this address space active. */
+	count_t cpu_refcount;
+
+	/** B+tree of address space areas. */
+	btree_t as_area_btree;
+
+	/** Address space identifier. Constant on architectures that do not support ASIDs.*/
+	asid_t asid;
+	
+	/** Architecture specific content. */
+	as_arch_t arch;
+} as_t;
+
+typedef struct {
+	link_t link;		/**< Page hash table link. */
+	as_t *as;		/**< Address space. */
+	uintptr_t page;		/**< Virtual memory page. */
+	uintptr_t frame;	/**< Physical memory frame. */
+	unsigned g : 1;		/**< Global page. */
+	unsigned x : 1;		/**< Execute. */
+	unsigned w : 1;		/**< Writable. */
+	unsigned k : 1;		/**< Kernel privileges required. */
+	unsigned c : 1;		/**< Cacheable. */
+	unsigned a : 1;		/**< Accessed. */
+	unsigned d : 1;		/**< Dirty. */
+	unsigned p : 1;		/**< Present. */
+} pte_t;
 
 #endif
Index: kernel/genarch/include/mm/as_pt.h
===================================================================
--- kernel/genarch/include/mm/as_pt.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/mm/as_pt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -36,7 +36,43 @@
 #define KERN_AS_PT_H_
 
-#include <mm/as.h>
+#include <mm/mm.h>
+#include <arch/mm/asid.h>
+#include <adt/list.h>
+#include <adt/btree.h>
+#include <synch/mutex.h>
 
-extern as_operations_t as_pt_operations;
+#define AS_PAGE_TABLE
+
+/** Address space structure.
+ *
+ * as_t contains the list of as_areas of userspace accessible
+ * pages for one or more tasks. Ranges of kernel memory pages are not
+ * supposed to figure in the list as they are shared by all tasks and
+ * set up during system initialization.
+ */
+typedef struct {
+	/** Protected by asidlock. */
+	link_t inactive_as_with_asid_link;
+
+	mutex_t lock;
+
+	/** Number of references (i.e tasks that reference this as). */
+	count_t refcount;
+
+	/** Number of processors on wich is this address space active. */
+	count_t cpu_refcount;
+
+	/** B+tree of address space areas. */
+	btree_t as_area_btree;
+	
+	/** Page table pointer. */
+	pte_t *page_table;
+
+	/** Address space identifier. Constant on architectures that do not support ASIDs.*/
+	asid_t asid;
+	
+	/** Architecture specific content. */
+	as_arch_t arch;
+} as_t;
 
 #endif
Index: kernel/genarch/include/mm/page_ht.h
===================================================================
--- kernel/genarch/include/mm/page_ht.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/mm/page_ht.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -40,8 +40,8 @@
 #define KERN_PAGE_HT_H_
 
+#include <arch/types.h>
+#include <mm/as.h>
 #include <mm/page.h>
 #include <synch/mutex.h>
-#include <arch/types.h>
-#include <adt/list.h>
 #include <adt/hash_table.h>
 
@@ -62,20 +62,7 @@
 #define SET_PTL0_ADDRESS(x)
 
-struct pte {
-	link_t link;		/**< Page hash table link. */
-	as_t *as;		/**< Address space. */
-	uintptr_t page;		/**< Virtual memory page. */
-	uintptr_t frame;	/**< Physical memory frame. */
-	unsigned g : 1;		/**< Global page. */
-	unsigned x : 1;		/**< Execute. */
-	unsigned w : 1;		/**< Writable. */
-	unsigned k : 1;		/**< Kernel privileges required. */
-	unsigned c : 1;		/**< Cacheable. */
-	unsigned a : 1;		/**< Accessed. */
-	unsigned d : 1;		/**< Dirty. */
-	unsigned p : 1;		/**< Present. */
-};
+extern as_operations_t as_ht_operations;
+extern page_mapping_operations_t ht_mapping_operations;
 
-extern page_mapping_operations_t ht_mapping_operations;
 extern mutex_t page_ht_lock;
 extern hash_table_t page_ht;
Index: kernel/genarch/include/mm/page_pt.h
===================================================================
--- kernel/genarch/include/mm/page_pt.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/mm/page_pt.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -45,5 +45,5 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
+#include <mm/as.h>
 #include <mm/page.h>
 
@@ -108,4 +108,5 @@
 #define PTE_EXECUTABLE(p)	PTE_EXECUTABLE_ARCH((p))
 
+extern as_operations_t as_pt_operations;
 extern page_mapping_operations_t pt_mapping_operations;
 
Index: kernel/genarch/include/ofw/ofw_tree.h
===================================================================
--- kernel/genarch/include/ofw/ofw_tree.h	(revision e71a61d2f187f60c13024e0c300fa8b4703b2c70)
+++ kernel/genarch/include/ofw/ofw_tree.h	(revision b3f8fb771f871e7f2bb35ce9339717639e8f86d6)
@@ -31,5 +31,4 @@
 
 #include <arch/types.h>
-#include <typedefs.h>
 
 #define OFW_TREE_PROPERTY_MAX_NAMELEN	32
