diff --git a/sefht.geany b/sefht.geany
index 56ba616bad5db69ad4bb4e2dd89a475aac7e0209..ef3264e9eda3517e94bf0971af9be1a822c4ba27 100644
--- a/sefht.geany
+++ b/sefht.geany
@@ -28,7 +28,7 @@ long_line_behaviour=1
 long_line_column=72
 
 [files]
-current_page=14
+current_page=19
 FILE_NAME_0=923;Sh;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fconfigure.ac;0;8
 FILE_NAME_1=73;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2FMakefile.am;0;8
 FILE_NAME_2=1143;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmain.c;0;8
@@ -45,10 +45,10 @@ FILE_NAME_12=8225;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fp
 FILE_NAME_13=1892;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fnode_fragment.h;0;8
 FILE_NAME_14=25820;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.c;0;8
 FILE_NAME_15=3637;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.h;0;8
-FILE_NAME_16=1212;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.c;0;8
-FILE_NAME_17=1260;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.h;0;8
-FILE_NAME_18=1466;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.c;0;8
-FILE_NAME_19=1135;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.h;0;8
+FILE_NAME_16=1779;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.c;0;8
+FILE_NAME_17=1688;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.h;0;8
+FILE_NAME_18=14237;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.c;0;8
+FILE_NAME_19=1156;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.h;0;8
 FILE_NAME_20=4304;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fstatus.h;0;8
 FILE_NAME_21=1017;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Flog.h;0;4
 FILE_NAME_22=1077;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fmacro.h;0;8
diff --git a/src/lib/sefht/validator.c b/src/lib/sefht/validator.c
index f5d15af33eac9415bab7fabb8a8906a30de90e8f..9c6ad8ce01b8e40816f7518757dcff4067447b93 100644
--- a/src/lib/sefht/validator.c
+++ b/src/lib/sefht/validator.c
@@ -49,8 +49,12 @@ struct SH_Validator
 
 
 /*@null@*/
+/*@only@*/
 struct SH_Validator *
 SH_Validator_new (/*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	struct SH_Validator * validator;
 	validator = malloc (sizeof (struct SH_Validator));
@@ -80,9 +84,13 @@ SH_Validator_new (/*@null@*/ /*@out@*/ struct SH_Status * status)
 }
 
 /*@null@*/
+/*@only@*/
 struct SH_Validator *
 SH_Validator_copy (const struct SH_Validator * validator,
                    /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	struct SH_Validator * copy;
 	copy = malloc (sizeof (struct SH_Validator));
@@ -113,6 +121,8 @@ SH_Validator_copy (const struct SH_Validator * validator,
 
 void
 SH_Validator_free (/*@only@*/ struct SH_Validator * validator)
+	/*@modifies validator@*/
+	/*@releases validator@*/
 {
 	free_tags (validator);
 	free (validator);
diff --git a/src/lib/sefht/validator.h b/src/lib/sefht/validator.h
index d06b721d1642cd99fe002e8f9d41c6a460d43078..9b4b44cfcdd538973bc447255c9b4168f124fb8d 100644
--- a/src/lib/sefht/validator.h
+++ b/src/lib/sefht/validator.h
@@ -40,16 +40,26 @@ typedef struct SH_Validator SH_Validator;
 
 
 /*@null@*/
+/*@only@*/
 SH_Validator *
-SH_Validator_new (/*@null@*/ /*@out@*/ struct SH_Status * status);
+SH_Validator_new (/*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 /*@null@*/
+/*@only@*/
 SH_Validator *
 SH_Validator_copy (const SH_Validator * validator,
-                   /*@null@*/ /*@out@*/ struct SH_Status * status);
+                   /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 void
-SH_Validator_free (/*@only@*/ SH_Validator * validator);
+SH_Validator_free (/*@only@*/ struct SH_Validator * validator)
+	/*@modifies validator@*/
+	/*@releases validator@*/;
 
 
 #endif /* __VALIDATOR_H__ */
diff --git a/src/lib/sefht/validator_tag.c b/src/lib/sefht/validator_tag.c
index a9f0ef2fab1d5e6d9ce64407009dcd2e11ed24bd..887b996c54ce188f6acc159ab5f08ab76552b447 100644
--- a/src/lib/sefht/validator_tag.c
+++ b/src/lib/sefht/validator_tag.c
@@ -60,51 +60,94 @@ struct tag_info
 
 static inline
 bool
-init_tags (/*@out@*/ struct SH_Validator * validator,
-           /*@null@*/ /*@out@*/ struct SH_Status * status);
+init_tags (/*@special@*/ struct SH_Validator * validator,
+           /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@defines validator->tags,
+	        validator->tag_n,
+	        validator->last_tag@*/
+	/*@modifies validator->tags@*/
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 static inline
 bool
-copy_tags (/*@out@*/ struct SH_Validator * copy,
+copy_tags (/*@special@*/ struct SH_Validator * copy,
            const struct SH_Validator * validator,
-           /*@null@*/ /*@out@*/ struct SH_Status * status);
+           /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@defines copy->tags,
+	           copy->tag_n,
+	           copy->last_tag@*/
+	/*@modifies copy->tags@*/
+	/*@modifies copy->tag_n@*/
+	/*@modifies copy->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 static inline
 void
 free_tags (/*@special@*/ struct SH_Validator * validator)
+	/*@modifies validator->tags@*/
 	/*@releases validator->tags@*/;
 
 static inline
 size_t
-get_tag_number (const struct SH_Validator * validator);
+get_tag_number (const struct SH_Validator * validator)
+	/*@*/;
 
 static inline
 Tag
 add_tag (struct SH_Validator * validator,
          const char * tag,
-         /*@null@*/ /*@out@*/ struct SH_Status * status);
+         /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@modifies validator->tags@*/
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 /*@unused@*/
 static inline
 bool
-is_tag_id (struct SH_Validator * validator, Tag id);
+is_tag_id (const struct SH_Validator * validator, Tag id)
+	/*@*/;
 
 static inline
 bool
-is_tag_name (struct SH_Validator * validator, const char * name);
+is_tag_name (const struct SH_Validator * validator, const char * name)
+	/*@*/;
 
 /*@unused@*/
 static inline
 /*@null@*/
+/*@only@*/
 char *
-get_tag_name_by_id (struct SH_Validator * validator, Tag id,
-                    /*@null@*/ /*@out@*/ struct SH_Status * status);
+get_tag_name_by_id (const struct SH_Validator * validator, Tag id,
+                    /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 static inline
 Tag
-get_tag_id_by_name (struct SH_Validator * validator,
-                    const char * name);
+get_tag_id_by_name (const struct SH_Validator * validator,
+                    const char * name)
+	/*@*/;
 
+static inline
+bool
+remove_tag (struct SH_Validator * validator, Tag id,
+            /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->tags@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 
 #define EXECUTE_ON_ALL_TAGS_IF(ITER, CONDITION, BLOCK)                 \
@@ -125,6 +168,8 @@ do                                                                     \
 			if (index == free_index)                       \
 			{                                              \
 				is_free = TRUE;                        \
+                                                                       \
+				/*@innerbreak@*/                       \
 				break;                                 \
 			}                                              \
 		}                                                      \
@@ -132,7 +177,7 @@ do                                                                     \
 		if (!is_free && CONDITION) BLOCK                       \
 	}                                                              \
 }                                                                      \
-while (0)
+while (FALSE)
 
 #define EXECUTE_ON_ALL_TAGS(BASE, BLOCK)                               \
         EXECUTE_ON_ALL_TAGS_IF (BASE, TRUE, BLOCK)
@@ -140,13 +185,25 @@ while (0)
 
 static inline
 bool
-init_tags (/*@out@*/ struct SH_Validator * validator,
+init_tags (/*@special@*/ struct SH_Validator * validator,
            /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@defines validator->tags,
+	           validator->tag_n,
+	           validator->last_tag@*/
+	/*@modifies validator->tags@*/
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	validator->tags = malloc (sizeof (struct tag_info));
 	if (validator->tags == NULL)
 	{
 		set_status (status, E_ALLOC, 3, "malloc failed");
+
+		validator->tag_n = 0;
+		validator->last_tag = TAG_ERR;
 		return FALSE;
 	}
 
@@ -159,9 +216,18 @@ init_tags (/*@out@*/ struct SH_Validator * validator,
 
 static inline
 bool
-copy_tags (/*@out@*/ struct SH_Validator * copy,
+copy_tags (/*@special@*/ struct SH_Validator * copy,
            const struct SH_Validator * validator,
            /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@defines copy->tags,
+	           copy->tag_n,
+	           copy->last_tag@*/
+	/*@modifies copy->tags@*/
+	/*@modifies copy->tag_n@*/
+	/*@modifies copy->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	bool is_free;
 	size_t index;
@@ -178,6 +244,9 @@ copy_tags (/*@out@*/ struct SH_Validator * copy,
 	if (copy->tags == NULL)
 	{
 		set_status (status, E_ALLOC, 5, "malloc failed");
+
+		copy->tag_n = 0;
+		copy->last_tag = TAG_ERR;
 		return FALSE;
 	}
 
@@ -200,6 +269,8 @@ copy_tags (/*@out@*/ struct SH_Validator * copy,
 			if (index == free_index)
 			{
 				is_free = TRUE;
+
+				/*@innerbreak@*/
 				break;
 			}
 		}
@@ -238,8 +309,10 @@ copy_tags (/*@out@*/ struct SH_Validator * copy,
 	return TRUE;
 }
 
-static inline void
+static inline
+void
 free_tags (/*@special@*/ struct SH_Validator * validator)
+	/*@modifies validator->tags@*/
 	/*@releases validator->tags@*/
 {
 	EXECUTE_ON_ALL_TAGS (
@@ -255,6 +328,7 @@ free_tags (/*@special@*/ struct SH_Validator * validator)
 static inline
 size_t
 get_tag_number (const struct SH_Validator * validator)
+	/*@*/
 {
 	size_t tag_n;
 
@@ -277,6 +351,12 @@ Tag
 add_tag (struct SH_Validator * validator,
          const char * tag,
          /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@modifies validator->tags@*/
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	Tag tag_id;
 	size_t index;
@@ -367,7 +447,8 @@ add_tag (struct SH_Validator * validator,
 /*@unused@*/
 static inline
 bool
-is_tag_id (struct SH_Validator * validator, Tag id)
+is_tag_id (const struct SH_Validator * validator, Tag id)
+	/*@*/
 {
 	EXECUTE_ON_ALL_TAGS_IF (
 	    validator->tag,
@@ -381,7 +462,8 @@ is_tag_id (struct SH_Validator * validator, Tag id)
 
 static inline
 bool
-is_tag_name (struct SH_Validator * validator, const char * name)
+is_tag_name (const struct SH_Validator * validator, const char * name)
+	/*@*/
 {
 	EXECUTE_ON_ALL_TAGS_IF (
 	    validator->tag,
@@ -396,9 +478,13 @@ is_tag_name (struct SH_Validator * validator, const char * name)
 /*@unused@*/
 static inline
 /*@null@*/
+/*@only@*/
 char *
-get_tag_name_by_id (struct SH_Validator * validator, Tag id,
+get_tag_name_by_id (const struct SH_Validator * validator, Tag id,
                     /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	char * name;
 
@@ -422,8 +508,9 @@ get_tag_name_by_id (struct SH_Validator * validator, Tag id,
 
 static inline
 Tag
-get_tag_id_by_name (struct SH_Validator * validator,
+get_tag_id_by_name (const struct SH_Validator * validator,
                     const char * name)
+	/*@*/
 {
 	EXECUTE_ON_ALL_TAGS_IF (
 	    validator->tag,
@@ -439,6 +526,12 @@ static inline
 bool
 remove_tag (struct SH_Validator * validator, Tag id,
             /*@null@*/ /*@out@*/ struct SH_Status * status)
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->tags@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	#define tags validator->tags
 	#define tag_n validator->tag_n
@@ -469,6 +562,8 @@ remove_tag (struct SH_Validator * validator, Tag id,
 
 					tags[free_index].next =
 					tags[tags[free_index].next].next;
+
+					/*@innerbreak@*/
 					break;
 				}
 				}
@@ -520,15 +615,23 @@ remove_tag (struct SH_Validator * validator, Tag id,
 bool
 SH_Validator_check_tag (struct SH_Validator * validator,
                         const char * tag)
+	/*@*/
 {
 	return is_tag_name (validator, tag);
 }
 
 Tag
+/*@alt void@*/
 SH_Validator_register_tag (struct SH_Validator * validator,
                            const char * tag,
                            /*@null@*/ /*@out@*/
                            struct SH_Status * status)
+	/*@modifies validator->tags@*/
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	Tag tag_id;
 
@@ -547,6 +650,12 @@ SH_Validator_deregister_tag (struct SH_Validator * validator,
                              Tag id,
                              /*@null@*/ /*@out@*/
                              struct SH_Status * status)
+	/*@modifies validator->tag_n@*/
+	/*@modifies validator->tags@*/
+	/*@modifies validator->last_tag@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/
 {
 	return remove_tag (validator, id, status);
 }
diff --git a/src/lib/sefht/validator_tag.h b/src/lib/sefht/validator_tag.h
index 8ccbe31cedd1a957399f7483f970ee74bcdbb4f2..bc8305d0584aa82202b0aed375351f91d7257564 100644
--- a/src/lib/sefht/validator_tag.h
+++ b/src/lib/sefht/validator_tag.h
@@ -42,19 +42,29 @@ typedef unsigned int Tag;
 
 
 Tag
+/*@alt void@*/
 SH_Validator_register_tag (SH_Validator * validator,
                            const char * tag,
                            /*@null@*/ /*@out@*/
-                           struct SH_Status * status);
+                           struct SH_Status * status)
+	/*@modifies validator@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 bool
 SH_Validator_deregister_tag (SH_Validator * validator,
                              Tag id,
                              /*@null@*/ /*@out@*/
-                             struct SH_Status * status);
+                             struct SH_Status * status)
+	/*@modifies validator@*/
+	/*@globals fileSystem@*/
+	/*@modifies fileSystem@*/
+	/*@modifies status@*/;
 
 bool
-SH_Validator_check_tag (SH_Validator * validator,
-                        const char * tag);
+SH_Validator_check_tag (struct SH_Validator * validator,
+                        const char * tag)
+	/*@*/;
 
 #endif /* __VALIDATOR_TAG_H__ */