diff --git a/doc/internal/low_level/low_level b/doc/internal/low_level/low_level
index 768e9f3c41ae456943e5dde754274b70f391efae..0dcf146cb77c4fc77010f7bbc393644f762788cb 100644
--- a/doc/internal/low_level/low_level
+++ b/doc/internal/low_level/low_level
@@ -1,7 +1,7 @@
 NAME
 	low_level - low level routines supplied by pike
 
-DESCRIPTIONS
+DESCRIPTION
 	These functions are here to help you write fast and portable modules.
 	Pike itself also uses them for the same purpose.
 
diff --git a/doc/internal/pike/SETJMP b/doc/internal/pike/SETJMP
index 6283a08c642aebae7d779a1b22d37e97c8a279c8..fc99dba109ebf6742b0332e3de09d2735f00e0ed 100644
--- a/doc/internal/pike/SETJMP
+++ b/doc/internal/pike/SETJMP
@@ -40,10 +40,8 @@ EXAMPLE
 	  UNSETJMP(foo)
 	}
 
-
-
 KEYWORDS
-	internals
+	error_handling
 
 SEE ALSO
 	throw, error, UNSETJMP, SET_ONERROR, UNSET_ONERROR
diff --git a/doc/internal/pike/SET_ONERROR b/doc/internal/pike/SET_ONERROR
index b49be0607926ef43ed5164fcb571b6e601bbd1ba..911f7cd7c70a5c47b6196a82ddfe64dc876b9f1a 100644
--- a/doc/internal/pike/SET_ONERROR
+++ b/doc/internal/pike/SET_ONERROR
@@ -34,5 +34,8 @@ EXAMPLE
 	  UNSET_ONERROR(tmp);
 	}
 
+KEYWORDS
+	error_handling
+
 SEE ALSO
 	UNSET_ONERROR, error
diff --git a/doc/internal/pike/UNSETJMP b/doc/internal/pike/UNSETJMP
index 64835503eb08e1cb8ad74ec1b16181205e7f2933..41a50bfb30e2c22b5a9e8c8bba34f50fd4f9612e 100644
--- a/doc/internal/pike/UNSETJMP
+++ b/doc/internal/pike/UNSETJMP
@@ -5,5 +5,8 @@ DESCRIPTION
 	This macro cleans up after calling SETJMP. See the page for SETJMP
 	for more details.
 
+KEYWORDS
+	error_handling
+
 SEE ALSO
 	SETJMP
diff --git a/doc/internal/pike/UNSET_ONERROR b/doc/internal/pike/UNSET_ONERROR
index 663bfd334023d4860a3c3912e4eb9976ec4fa9c9..9f01e649950c870f9ac70389d26144413344cf4e 100644
--- a/doc/internal/pike/UNSET_ONERROR
+++ b/doc/internal/pike/UNSET_ONERROR
@@ -5,5 +5,8 @@ DESCRIPTION
 	This function cleans up after a SET_ONERROR call.
 	See SET_ONERROR for more details.
 
+KEYWORDS
+	error_handling
+
 SEE ALSO
 	SET_ONERROR, SETJMP
diff --git a/doc/internal/pike/data_types b/doc/internal/pike/data_types
new file mode 100644
index 0000000000000000000000000000000000000000..2b9f4bb4dd029240972978898bf21d39a1cad64c
--- /dev/null
+++ b/doc/internal/pike/data_types
@@ -0,0 +1,10 @@
+NAME
+	data_types - Pike internal data types
+
+DESCRIPTION
+	Of course the Pike source uses a lot of data types except for those
+	that represents mappings, arrays, strings etc. Callbacks, stack frames
+	and type fields are just the beginning.
+
+KEYWORDS
+	internals
diff --git a/doc/internal/pike/error b/doc/internal/pike/error
index 47dcea7dca174d119cbbbabc52ceb6e4a27fdf96..8ad505563db41f35652ea2b6eac447886a0e613c 100644
--- a/doc/internal/pike/error
+++ b/doc/internal/pike/error
@@ -15,7 +15,7 @@ DESCRIPTION
 	resent active catch() call.
 
 KEYWORDS
-	internals
+	error_handling
 
 SEE ALSO
 	SET_ONERROR, fatal, throw
diff --git a/doc/internal/pike/error_handling b/doc/internal/pike/error_handling
new file mode 100644
index 0000000000000000000000000000000000000000..2b70fadd4ec46bb2549640f8ae2bd05289afc832
--- /dev/null
+++ b/doc/internal/pike/error_handling
@@ -0,0 +1,21 @@
+NAME
+	error_handling - how to error handling works inside Pike
+
+DESCRIPTION
+	Error handling in Pike is implemented with the setjmp/longjmp
+	functionality. This means that functions that can cause errors
+	will NOT return if an error occurs. Special care has to be taken
+	so that no memory is left unfreed if an error occurs. Almost all
+	functions that can cause Pike code to be executed can cause an
+	error. Also functions that implements Pike operators / functions
+	can cause errors. If you are paranoid you should assume that all
+	functions can cause errors. You may also read the code for the
+	function to see if there are any calls to error() in it. If the
+	function is documented in this manual, it will say if the function
+	can cause errors.
+
+KEYWORDS
+	internals
+
+
+
diff --git a/doc/internal/pike/fatal b/doc/internal/pike/fatal
index 397feae1bee9163705a18d618a2298bfe43b113d..f36e49b6d6236264aabe4839c9c32cd7d35f1629 100644
--- a/doc/internal/pike/fatal
+++ b/doc/internal/pike/fatal
@@ -15,7 +15,7 @@ DESCRIPTION
 	sometimes be a lot better...
 
 KEYWORDS
-	internal
+	error_handling
 
 SEE ALSO
 	error
diff --git a/doc/internal/pike/frame b/doc/internal/pike/frame
index 7d9e6bccec95cc4cbbca78f6579775e90ffba08f..3cc2e22ab40528a57d064823e42b65f6cfaa8d22 100644
--- a/doc/internal/pike/frame
+++ b/doc/internal/pike/frame
@@ -16,4 +16,4 @@ DESCRIPTION
 	             	for you if you have done add_storage() earlier.
 
 KEYWORDS
-	internals
+	data_types
diff --git a/doc/internal/pike/throw b/doc/internal/pike/throw
index e5ee768eab177cd35c2040084056b21c41fa8e98..c0163214d6780599115d598a52fdb2be4e9428f5 100644
--- a/doc/internal/pike/throw
+++ b/doc/internal/pike/throw
@@ -14,7 +14,7 @@ DESCRIPTION
 	not return. See SETJMP for more details.
 
 KEYWORDS
-	internals
+	error_handling
 
 SEE ALSO
 	SETJMP, error
diff --git a/doc/internal/pike/type_field b/doc/internal/pike/type_field
index 84bbbe69e2c08bfa2b051b9581363e4300e41fed..05e1fec0294fd1e33a74bf50dc496f1630c29427 100644
--- a/doc/internal/pike/type_field
+++ b/doc/internal/pike/type_field
@@ -13,5 +13,8 @@ DESCRIPTION
 	explicitly, so if you don't know what types are involved you should
 	use -1 for the type field.
 
+KEYWORDS
+	data_types
+
 SEE ALSO
 	mapping, array, svalue
diff --git a/doc/internal/pike/types b/doc/internal/pike/types
index 25fad092ced965226e9e1b94e8cae7163f4f3fb5..ba9074561d321ccdc75229b13e802bce4a0e82e2 100644
--- a/doc/internal/pike/types
+++ b/doc/internal/pike/types
@@ -27,7 +27,7 @@ DESCRIPTION
 	together.
 
 KEYWORDS
-	internals
+	data_types
 
 SEE ALSO
 	add_function, add_efun
\ No newline at end of file