diff --git a/.idea/runConfigurations/reqman_issues_gitlab_sync.xml b/.idea/runConfigurations/reqman_issues_gitlab_sync.xml
index 15cac09093d37ad3e60f7872b98fe90f30ed4512..61f5a0eff284d034b923306e6a8c74aa1326641e 100644
--- a/.idea/runConfigurations/reqman_issues_gitlab_sync.xml
+++ b/.idea/runConfigurations/reqman_issues_gitlab_sync.xml
@@ -3,7 +3,7 @@
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <go_parameters value="-ldflags &quot;-X main.version=1.0.15 -X main.build=20220616123315&quot;" />
-    <parameters value="tasks gitlab -p $PROJECT_DIR$/development/examples/example1" />
+    <parameters value="gitlab sync -p $PROJECT_DIR$/development/examples/example1" />
     <kind value="DIRECTORY" />
     <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
     <directory value="$PROJECT_DIR$/application/source" />
diff --git a/.idea/runConfigurations/reqman_requirement_report.xml b/.idea/runConfigurations/reqman_requirement_report.xml
index e2bbccbc1f8e368e455bb688795ef80282300e09..b35e5501e910abf2b110d8f11f5a98d6fafb44f9 100644
--- a/.idea/runConfigurations/reqman_requirement_report.xml
+++ b/.idea/runConfigurations/reqman_requirement_report.xml
@@ -2,7 +2,7 @@
   <configuration default="false" name="reqman requirement report" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
-    <parameters value="requirements report --gitlab --grouped-by Estimation -p $PROJECT_DIR$/development/examples/example1/req1/1/test1.md" />
+    <parameters value="requirements report --remote --grouped-by Estimation -p $PROJECT_DIR$/development/examples/example1/req1/1/test1.md" />
     <kind value="DIRECTORY" />
     <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
     <directory value="$PROJECT_DIR$/application/source" />
diff --git a/application/source/changelog.go b/application/source/changelog.go
index 4c54ef52f8cc3126376371809f229dcc2e745c9c..b7465d515bb1fd6aec6a5cb06783cbf8ef7530b7 100644
--- a/application/source/changelog.go
+++ b/application/source/changelog.go
@@ -8,12 +8,13 @@ import (
 
 type logs []string
 
-func buildChangelog(config *Configuration, pageMap map[string]requirement) (error, string, bool) {
+func buildChangelog(config *Configuration, pageMap map[string]*requirement) (error, string, bool) {
 
 	changelog := make(map[string]logs)
 	datemap := make(map[string]string)
 
-	for _, p := range pageMap {
+	for _, q := range pageMap {
+		p := *q
 
 		e := strings.Trim(p.Title+" ("+p.ID+")", " ")
 
diff --git a/application/source/commandline.go b/application/source/commandline.go
index 86ab5e46060814d454a96c1284c7526820691757..0c7d2b15f85d1752467dc7be504b6f8313cbed5e 100644
--- a/application/source/commandline.go
+++ b/application/source/commandline.go
@@ -9,63 +9,6 @@ import (
 	"github.com/jessevdk/go-flags"
 )
 
-type commandLineOptions struct {
-	Config       string `short:"c" long:"config" description:"file with configuration values"`
-	Path         string `short:"p" long:"path" description:"define the path where the specifications are located" default:"."`
-	DateFormat   string `long:"date-format" description:"date format" default:"2006-01-02"`
-	Requirements struct {
-		Print struct {
-			Columns []string `short:"c" long:"column" description:"defines the columns used"`
-		} `command:"print"`
-		Add struct {
-			ID string `long:"id" required:"true" description:"new requirement id"`
-		} `command:"add"`
-		Report struct {
-			GroupedBy string `long:"grouped-by" required:"false" description:"grouped by"`
-			Gitlab    bool   `long:"gitlab" description:"get data from gitlab"`
-		} `command:"report"`
-	} `command:"requirements"`
-	Tasks struct {
-		Print struct {
-		} `command:"print"`
-		Gitlab struct {
-			ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
-			Token     string `long:"token" required:"false" description:"gitlab token"`
-		} `command:"gitlab"`
-	} `command:"tasks"`
-	Issues struct {
-		Print struct {
-		} `command:"print"`
-		Gitlab struct {
-			ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
-			Token     string `long:"token" required:"false" description:"gitlab token"`
-		} `command:"gitlab"`
-	} `command:"issues"`
-	Items struct {
-		Print struct {
-		} `command:"print"`
-	} `command:"items"`
-	Changelog struct {
-		Print struct {
-		} `command:"print"`
-	} `command:"changelog"`
-	Privacy struct {
-		Print struct {
-		} `command:"print"`
-	} `command:"privacy"`
-	Overview struct {
-		Print struct {
-			Columns           []string `short:"c" long:"column" description:"defines the columns used"`
-			TemplatePath      string   `short:"t" long:"template" description:"file name of the template of the overview page"`
-			Output            string   `short:"o" long:"output" description:"redirect output to a file"`
-			Format            string   `short:"f" long:"format" description:"the desired output format" choice:"pdf" choice:"md"`
-			LatexTemplatePath string   `short:"l" long:"latex-template-path" description:"latex template"`
-		} `command:"print"`
-	} `command:"overview"`
-	Version struct {
-	} `command:"version"`
-}
-
 func executeCommand() {
 
 	arguments := new(commandLineOptions)
@@ -178,25 +121,41 @@ func executeCommand() {
 		subcommand := activeCommand.Active
 		switch subcommand.Name {
 		case "print":
-			err := printIssueTable(config)
+
+			if arguments.Issues.Print.GitlabToken != "" {
+				config.Gitlab.Token = arguments.Issues.Print.GitlabToken
+			}
+
+			err := printIssueTable(config, arguments)
 			if err != nil {
 				printErrorAndExit(2, err.Error())
 			}
-		case "gitlab":
-			syncTasksWithGitlab(config)
+
+		case "items":
+			subcommand := activeCommand.Active
+			switch subcommand.Name {
+			case "print":
+				err := printItemTable(config)
+				if err != nil {
+					printErrorAndExit(2, err.Error())
+				}
+			}
+
 		}
 
-	case "items":
+	case "gitlab":
 		subcommand := activeCommand.Active
 		switch subcommand.Name {
-		case "print":
-			err := printItemTable(config)
-			if err != nil {
-				printErrorAndExit(2, err.Error())
+		case "sync":
+
+			if arguments.Gitlab.GitlabToken != "" {
+				config.Gitlab.Token = arguments.Gitlab.GitlabToken
 			}
-		}
 
+			syncTasksWithGitlab(config)
+		}
 	}
+
 }
 
 func readTemplate(argPath string) string {
diff --git a/application/source/commandlineoptions.go b/application/source/commandlineoptions.go
new file mode 100644
index 0000000000000000000000000000000000000000..40b407e82d0588a88ebdd7a8455ce66bf1c2c36b
--- /dev/null
+++ b/application/source/commandlineoptions.go
@@ -0,0 +1,62 @@
+package main
+
+type commandLineOptions struct {
+	Config       string `short:"c" long:"config" description:"file with configuration values"`
+	Path         string `short:"p" long:"path" description:"define the path where the specifications are located" default:"."`
+	DateFormat   string `long:"date-format" description:"date format" default:"2006-01-02"`
+	Requirements struct {
+		Print struct {
+			Columns []string `short:"c" long:"column" description:"defines the columns used"`
+		} `command:"print"`
+		Add struct {
+			ID string `long:"id" required:"true" description:"new requirement id"`
+		} `command:"add"`
+		Report struct {
+			GroupedBy string `long:"grouped-by" required:"false" description:"grouped by"`
+			Remote    bool   `long:"remote" description:"get data from remote"`
+		} `command:"report"`
+	} `command:"requirements"`
+	Tasks struct {
+		Print struct {
+		} `command:"print"`
+		//Sync struct {
+		//	//ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
+		//	//Token     string `long:"token" required:"false" description:"gitlab token"`
+		//} `command:"sync"`
+	} `command:"tasks"`
+	Issues struct {
+		Print struct {
+			GitlabToken string `long:"gitlab-token" required:"false" description:"gitlab token"`
+			Remote      bool   `long:"remote" required:"false" description:"get data from remote"`
+		} `command:"print"`
+	} `command:"issues"`
+	Items struct {
+		Print struct {
+		} `command:"print"`
+	} `command:"items"`
+	Changelog struct {
+		Print struct {
+		} `command:"print"`
+	} `command:"changelog"`
+	Privacy struct {
+		Print struct {
+		} `command:"print"`
+	} `command:"privacy"`
+	Overview struct {
+		Print struct {
+			Columns           []string `short:"c" long:"column" description:"defines the columns used"`
+			TemplatePath      string   `short:"t" long:"template" description:"file name of the template of the overview page"`
+			Output            string   `short:"o" long:"output" description:"redirect output to a file"`
+			Format            string   `short:"f" long:"format" description:"the desired output format" choice:"pdf" choice:"md"`
+			LatexTemplatePath string   `short:"l" long:"latex-template-path" description:"latex template"`
+		} `command:"print"`
+	} `command:"overview"`
+	Version struct {
+	} `command:"version"`
+	Gitlab struct {
+		Sync struct {
+		} `command:"sync"`
+		//			ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
+		GitlabToken string `long:"gitlab-token" required:"false" description:"gitlab token"`
+	} `command:"gitlab"`
+}
diff --git a/application/source/config.go b/application/source/config.go
index ca5d6a4b2e70745336bde1e2171a9ccde24d9021..84ef8bc49710418fff8cd1ed9e7b2b4e31549dd5 100644
--- a/application/source/config.go
+++ b/application/source/config.go
@@ -29,9 +29,9 @@ type Configuration struct {
 		DateFormat string `yaml:"DateFormat"`
 	} `yaml:"Locale"`
 
-	GitLab struct {
+	Gitlab struct {
 		Token string `yaml:"Token"`
-	} `yaml:"GitLab"`
+	} `yaml:"Gitlab"`
 
 	Overview struct {
 		Template struct {
diff --git a/application/source/defaults.go b/application/source/defaults.go
index fb35a014df6f4fe96dc5d89c56b5e723322503b4..a54ff24e2ae423d78ba05e2c44fbdf8a86c6b52f 100644
--- a/application/source/defaults.go
+++ b/application/source/defaults.go
@@ -104,9 +104,23 @@ Created: %%CREATED%%
 Last Update: null
 
 # The issues that are associated with this requirement
+# You can add an issue by adding a new line to the list with the following format:
+#  - Gitlab:
+#    ID: <issue-id>
+# 
+# if the issue is not yet in the project, you can add it by using the following format:
+# Only the Title is required.
+#  - Gitlab:
+#      Title: <issue-title>
+#      Description: <issue-description>
+#      Priority: <issue-priority>
+#      Status: <issue-status>
+#      Assignee: <issue-assignee>
+#      Milestone: <issue-milestone>
+#      Labels: <issue-labels>
+# 
 Issues:
-  - Title: null
-    URL: null
+
 
 # the individual items as a list
 Items:
diff --git a/application/source/files.go b/application/source/files.go
index 9e6213f05c7d87ad3d195ebb73e6a868845c9cad..41190a6305aa00f630b90a139f5356fd425bd54a 100644
--- a/application/source/files.go
+++ b/application/source/files.go
@@ -8,11 +8,11 @@ import (
 )
 
 //
-func collectStructureFromFiles(directory string) (error, map[string]requirement) {
+func collectStructureFromFiles(directory string) (error, map[string]*requirement) {
 
 	cleanedDirectory := path.Clean(directory)
 
-	pageMap := make(map[string]requirement)
+	pageMap := make(map[string]*requirement)
 
 	//pageMap := []requirement{}
 
@@ -53,10 +53,11 @@ func collectStructureFromFiles(directory string) (error, map[string]requirement)
 			p.data.File = "." + bs
 			p.data.Absolute = cleanedPath
 			p.data.ToDos = findTask(content)
+			p.data.Yaml = p.node
 
 			k := cleanedPath
 
-			pageMap[k] = p.data
+			pageMap[k] = &p.data
 
 			return nil
 		})
diff --git a/application/source/gitlab.go b/application/source/gitlab.go
index afdbc1f99352f8fc7e4f18da212f52911a2370a1..afd3e06a8ed52bdc892797047e2f785be7eec723 100644
--- a/application/source/gitlab.go
+++ b/application/source/gitlab.go
@@ -76,8 +76,8 @@ func getGitlabContext(config *Configuration) *gitlabContext {
 
 	options := gitlab.WithBaseURL(context.apiUrl.String())
 
-	context.token = config.GitLab.Token
-	c, err := gitlab.NewClient(config.GitLab.Token, options)
+	context.token = config.Gitlab.Token
+	c, err := gitlab.NewClient(config.Gitlab.Token, options)
 	if err != nil {
 		printErrorAndExit(2, "Failed to create client", err.Error())
 	}
@@ -116,26 +116,29 @@ func searchProject(context *gitlabContext) {
 
 }
 
-func enrichIssuesWithGitlab(pageMap *map[string]requirement, config *Configuration) error {
+func enrichIssuesWithGitlab(pageMap map[string]*requirement, config *Configuration) error {
 
 	context := getGitlabContext(config)
 	searchProject(context)
 
-	for _, requirement := range *pageMap {
+	for _, requirement := range pageMap {
+
 		for k, issue := range requirement.Issues {
 
-			if issue.GitlabID == 0 {
+			if issue.GitlabIntern == nil {
+				continue
+			}
+
+			if issue.GitlabIntern.ID == 0 {
 				continue
 			}
 
-			i, err := loadIssuesFromGitlab(context, issue.GitlabID)
+			i, err := loadIssuesFromGitlab(context, issue.GitlabIntern.ID)
 			if err != nil {
 				return err
 			}
 
-			// requirement is a copy of the original requirement
-			// this works because issue is a pointer
-			requirement.Issues[k].Gitlab = i
+			requirement.Issues[k].GitlabRemote = i
 		}
 	}
 
diff --git a/application/source/issues.go b/application/source/issues.go
index 36c58d7dd9f25b44535477bc77db0e8b5fd9e0a7..ed88f4f40a98809b6dc94ac0ce7397716630a27a 100644
--- a/application/source/issues.go
+++ b/application/source/issues.go
@@ -6,24 +6,26 @@ import (
 	"strings"
 	"time"
 
-	"github.com/xanzy/go-gitlab"
+	"gopkg.in/yaml.v3"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/xanzy/go-gitlab"
 )
 
+type GitlabInternalIssueStruct struct {
+	ID          int      `yaml:"ID"`
+	Title       string   `yaml:"Title"`
+	Description string   `yaml:"Description"`
+	Priority    string   `yaml:"Priority"`
+	Status      string   `yaml:"Status"`
+	Assignee    string   `yaml:"Assignee"`
+	Milestone   string   `yaml:"Milestone"`
+	Labels      []string `yaml:"Labels"`
+}
+
 type Issue struct {
-	GitlabID int `yaml:"Gitlab-ID"`
-	Gitlab   *gitlab.Issue
-	//Title string `yaml:"Title"`
-	//URL   string `yaml:"URL"`
-	//ID            string    `yaml:"ID"`
-	//Name          string    `yaml:"Name"`
-	//Type          string    `yaml:"Type"`
-	//Group         string    `yaml:"group"`
-	//Description   string    `yaml:"Description"`
-	//DeliveryUntil time.Time `yaml:"Delivery until"`
-	//ProvidedOn    time.Time `yaml:"Provided on"`
-	//ProvidedBy    string    `yaml:"Provided by"`
+	GitlabIntern *GitlabInternalIssueStruct `yaml:"Gitlab"`
+	GitlabRemote *gitlab.Issue
 }
 
 func loadIssuesFromGitlab(context *gitlabContext, issueID int) (*gitlab.Issue, error) {
@@ -40,7 +42,7 @@ func loadIssuesFromGitlab(context *gitlabContext, issueID int) (*gitlab.Issue, e
 	//err, pageData := collectStructureFromFiles(config.Path)
 }
 
-func buildIssueOverviewTable(config *Configuration, pageMap map[string]requirement, extended bool) (error, string, bool) {
+func buildIssueOverviewTable(config *Configuration, pageMap map[string]*requirement, extended bool) (error, string, bool) {
 
 	buf := new(bytes.Buffer)
 	has := false
@@ -71,12 +73,16 @@ func buildIssueOverviewTable(config *Configuration, pageMap map[string]requireme
 	for _, requirement := range pageMap {
 		for _, issue := range requirement.Issues {
 
-			gitlab := issue.Gitlab
+			gitlabIntern := issue.GitlabIntern
+
+			if gitlabIntern == nil {
+				continue
+			}
 
 			var col []string
 			dueDate := "—"
-			id := printer.Sprintf("%d", issue.GitlabID)
 
+			id := "—"
 			labels := "—"
 			estimate := "—"
 			spent := "—"
@@ -84,20 +90,29 @@ func buildIssueOverviewTable(config *Configuration, pageMap map[string]requireme
 			title := "—"
 			assignees := "—"
 
-			if gitlab != nil {
-				if gitlab.DueDate != nil {
-					d := (time.Time)(*gitlab.DueDate)
+			id = printer.Sprintf("%d", gitlabIntern.ID)
+			if gitlabIntern.Labels != nil {
+				labels = strings.Join(gitlabIntern.Labels, ", ")
+			}
+			if gitlabIntern.Title != "" {
+				title = gitlabIntern.Title
+			}
+
+			gitlabRemote := issue.GitlabRemote
+			if gitlabRemote != nil {
+				if gitlabRemote.DueDate != nil {
+					d := (time.Time)(*gitlabRemote.DueDate)
 					dueDate = d.Format(config.Locale.DateFormat)
 				}
 
-				labels = printer.Sprintf("%s", strings.Join(gitlab.Labels, ", "))
-				estimate = printer.Sprintf("%s", gitlab.TimeStats.HumanTimeEstimate)
-				spent = printer.Sprintf("%s", gitlab.TimeStats.HumanTotalTimeSpent)
-				state = printer.Sprintf(gitlab.State)
-				title = printer.Sprintf("%s", gitlab.Title)
+				labels = printer.Sprintf("%s", strings.Join(gitlabRemote.Labels, ", "))
+				estimate = printer.Sprintf("%s", gitlabRemote.TimeStats.HumanTimeEstimate)
+				spent = printer.Sprintf("%s", gitlabRemote.TimeStats.HumanTotalTimeSpent)
+				state = printer.Sprintf(gitlabRemote.State)
+				title = printer.Sprintf("%s", gitlabRemote.Title)
 
 				a := []string{}
-				for _, assignee := range gitlab.Assignees {
+				for _, assignee := range gitlabRemote.Assignees {
 					a = append(a, assignee.Name)
 				}
 
@@ -125,11 +140,14 @@ func buildIssueOverviewTable(config *Configuration, pageMap map[string]requireme
 	return nil, buf.String(), has
 }
 
-func printIssueTable(config *Configuration) error {
+func printIssueTable(config *Configuration, arguments *commandLineOptions) error {
 	err, pageMap := collectStructureFromFiles(config.Path)
-	enrichIssuesWithGitlab(&pageMap, config)
-	if err != nil {
-		return err
+
+	if arguments.Issues.Print.Remote {
+		enrichIssuesWithGitlab(pageMap, config)
+		if err != nil {
+			return err
+		}
 	}
 
 	err, table, _ := buildIssueOverviewTable(config, pageMap, true)
@@ -156,17 +174,35 @@ func syncTasksWithGitlab(config *Configuration) error {
 	context := getGitlabContext(config)
 	searchProject(context)
 
-	client := context.client
+	//client := context.client
 
-	issues, response, err := client.Issues.ListProjectIssues(context.project.ID, &gitlab.ListProjectIssuesOptions{})
-	if err != nil {
-		printErrorAndExit(0, "Failed to get issues %s", err.Error())
-	}
+	//issues, response, err := client.Issues.ListProjectIssues(context.project.ID, &gitlab.ListProjectIssuesOptions{})
+	//if err != nil {
+	//	printErrorAndExit(0, "Failed to get issues %s", err.Error())
+	//}
+
+	//for _, issue := range issues {
+	//	fmt.Println(issue.Title)
+	//}
+	//fmt.Println(response.StatusCode)
+
+	for file, pd := range pageData {
+		fmt.Println(file)
+		//fmt.Println(pd)
+
+		buf := new(bytes.Buffer)
+		//pd.Yaml.Encode(buf)
+
+		var encoder = yaml.NewEncoder(buf)
+		err := encoder.Encode(pd.Yaml)
+		if err != nil {
+			return err
+		}
+		encoder.Close()
+
+		fmt.Println(string(buf.Bytes()))
 
-	for _, issue := range issues {
-		fmt.Println(issue.Title)
 	}
-	fmt.Println(response.StatusCode)
 
 	return nil
 }
diff --git a/application/source/items.go b/application/source/items.go
index 567df8ff85aa153c689537282d0462c2dd6dca5d..1d1a262e0a410aca17d47cf318e693d7fd76c533 100644
--- a/application/source/items.go
+++ b/application/source/items.go
@@ -19,7 +19,7 @@ type Item struct {
 	ProvidedBy    string    `yaml:"Provided by"`
 }
 
-func buildItemOverviewTable(config *Configuration, pageMap map[string]requirement, extended bool) (error, string, bool) {
+func buildItemOverviewTable(config *Configuration, pageMap map[string]*requirement, extended bool) (error, string, bool) {
 
 	buf := new(bytes.Buffer)
 	has := false
diff --git a/application/source/privacy.go b/application/source/privacy.go
index ae9742915ad68a066cd7fd03ba18549949050a73..381ac023ef76238d62026cd38d576bc4bf314dcb 100644
--- a/application/source/privacy.go
+++ b/application/source/privacy.go
@@ -19,7 +19,7 @@ type Privacy struct {
 	TOM                 string `yaml:"TOM"`
 }
 
-func buildPrivacy(config *Configuration, pageMap map[string]requirement) (error, string, bool) {
+func buildPrivacy(config *Configuration, pageMap map[string]*requirement) (error, string, bool) {
 
 	hasPrivacy := false
 	text := ""
diff --git a/application/source/requirements.go b/application/source/requirements.go
index 69f8217c0531c79874400798b26e6a4efadd2602..ec0319a7240192960964f94af04750127cdb3c49 100644
--- a/application/source/requirements.go
+++ b/application/source/requirements.go
@@ -11,6 +11,8 @@ import (
 	"strings"
 	"time"
 
+	"gopkg.in/yaml.v3"
+
 	"github.com/olekukonko/tablewriter"
 )
 
@@ -22,6 +24,9 @@ type requirement struct {
 	Privacy  []Privacy `yaml:"Privacy"`
 	Issues   []Issue   `yaml:"Issues"`
 
+	// remember the node structure of yaml
+	Yaml *yaml.Node
+
 	ID         string        `yaml:"ID"`
 	References []string      `yaml:"References"`
 	Type       string        `yaml:"Type"` // Display, Functional, Performance, Printing, Report, Testing and Validate
@@ -66,7 +71,7 @@ func addRequirement(config *Configuration, arguments *commandLineOptions) error
 	return nil
 }
 
-func buildRequirements(config *Configuration, pageMap map[string]requirement) (error, string, bool) {
+func buildRequirements(config *Configuration, pageMap map[string]*requirement) (error, string, bool) {
 
 	hasRequirements := false
 
@@ -162,45 +167,26 @@ func printRequirements(config *Configuration) error {
 	return err
 }
 
-func integrateGitlabTimeSpent(pageMap *map[string]requirement) {
+func integrateGitlabTimeSpent(pageMap map[string]*requirement) {
 
-	for k, requirement := range *pageMap {
+	for _, requirement := range pageMap {
 
 		for _, i := range requirement.Issues {
-			if i.Gitlab == nil {
+			if i.GitlabRemote == nil {
 				continue
 			}
 
-			//d := time.Duration(i.Gitlab.TimeStats.TotalTimeSpent) * time.Second
-			//fmt.Println(fn, d)
-			//ref[fn].TimeSpent += d
-			requirement.TimeSpent = 99999999
-			requirement.Status = "done"
-
-			//			fmt.Println(i.Gitlab.TimeStats.TotalTimeSpent)
+			d := time.Duration(i.GitlabRemote.TimeStats.TotalTimeSpent) * time.Second
+			requirement.TimeSpent += d
 		}
 
-		pageMap[k] = requirement
-
-		//if &pd.Issues == nil || &pd.Issues. == nil {
-		//	continue
-		//}
-		//
-		//for _, issue := range pd.Issues.Gitlab {
-		//	if issue == nil {
-		//		continue
-		//	}
-		//	pd.TimeSpent += *issue.TimeSpent
-		//}
-
 	}
-	fmt.Println("integrateGitlabTimeSpent")
 
 }
 
-func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageMap *map[string]requirement) (error, string, string, bool) {
+func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageMap map[string]*requirement) (error, string, string, bool) {
 
-	if arguments.Requirements.Report.Gitlab {
+	if arguments.Requirements.Report.Remote {
 		err := enrichIssuesWithGitlab(pageMap, config)
 		if err != nil {
 			return err, "", "", false
@@ -218,7 +204,8 @@ func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageM
 	hasReport := false
 
 	found := false
-	for _, p := range *pageMap {
+	for _, q := range pageMap {
+		p := *q
 
 		fields := reflect.VisibleFields(reflect.TypeOf(p))
 		for _, field := range fields {
@@ -243,13 +230,13 @@ func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageM
 	return nil, t1, t2, hasReport
 }
 
-func buildTable1(groupedByKey string, pageMap *map[string]requirement) string {
+func buildTable1(groupedByKey string, pageMap map[string]*requirement) string {
 
 	estimated := map[string]float64{}
 	timeSpent := map[string]float64{}
 
-	for _, d := range *pageMap {
-
+	for _, q := range pageMap {
+		d := *q
 		r := reflect.ValueOf(d)
 		f := r.FieldByName(groupedByKey)
 		k := ""
@@ -328,12 +315,12 @@ type mathData struct {
 	time timeStruct
 }
 
-func buildTable2(pageMap *map[string]requirement) string {
+func buildTable2(pageMap map[string]*requirement) string {
 
 	est := map[int]mathData{}
 
 	// inti struct
-	for _, d := range *pageMap {
+	for _, d := range pageMap {
 		k := d.Estimation
 
 		m := mathData{}
@@ -349,7 +336,7 @@ func buildTable2(pageMap *map[string]requirement) string {
 	}
 
 	// calc sum
-	for _, d := range *pageMap {
+	for _, d := range pageMap {
 		k := d.Estimation
 		s := est[k]
 
@@ -427,7 +414,7 @@ func printRequirementReport(config *Configuration, arguments *commandLineOptions
 		return err
 	}
 
-	err, table1, table2, _ := buildTimeReport(config, arguments, &pageData)
+	err, table1, table2, _ := buildTimeReport(config, arguments, pageData)
 	if err != nil {
 		return err
 	}
diff --git a/application/source/tasks.go b/application/source/tasks.go
index a7a87037cceef78f81250d72f3be4167d1ea92d8..3db66345360a897382acc2540385eb2740615c63 100644
--- a/application/source/tasks.go
+++ b/application/source/tasks.go
@@ -72,7 +72,7 @@ func findTask(content []byte) []task {
 	return toDos
 }
 
-func buildTasksTable(config *Configuration, pageMap map[string]requirement, extended bool) (error, string, bool) {
+func buildTasksTable(config *Configuration, pageMap map[string]*requirement, extended bool) (error, string, bool) {
 
 	buf := new(bytes.Buffer)
 
diff --git a/application/source/util.go b/application/source/util.go
index 2f109cdb214a4b09cffce79d02ad694be2dcf868..45ce7a12cbae20f02ccb0367d03a7a112d3bb296 100644
--- a/application/source/util.go
+++ b/application/source/util.go
@@ -14,6 +14,7 @@ import (
 type contentRequirement struct {
 	content string
 	data    requirement
+	node    *yaml.Node
 }
 
 func splitYamlParts(content []byte) (error, contentRequirement) {
@@ -71,13 +72,15 @@ func splitYamlParts(content []byte) (error, contentRequirement) {
 		return err, contentRequirement{}
 	}
 
-	data := requirement{}
-	err = yaml.Unmarshal([]byte(meta), &data)
+	var node yaml.Node
+	err = yaml.Unmarshal([]byte(meta), &node)
 	if err != nil {
-		printError("YAML parse error", err.Error())
 		return err, contentRequirement{}
 	}
 
+	data := requirement{}
+	node.Decode(&data)
+
 	tempItem := []Item{}
 	for i, _ := range data.Items {
 
@@ -107,6 +110,8 @@ func splitYamlParts(content []byte) (error, contentRequirement) {
 	req := contentRequirement{}
 	req.data = data
 
+	req.node = &node
+
 	var buffer bytes.Buffer
 	err = t.Execute(&buffer, data)
 	if err != nil {
diff --git a/development/examples/example1/144444.md b/development/examples/example1/144444.md
new file mode 100644
index 0000000000000000000000000000000000000000..5ebaeecea40fe52ecee6c3efcfd6fc841679b232
--- /dev/null
+++ b/development/examples/example1/144444.md
@@ -0,0 +1,180 @@
+
+---
+ID: 144444
+Title: null
+
+# Reference to other requirements
+References: null
+
+# Display, Functional, Performance, Printing, Report, Testing or Validation
+Type: null
+
+Alias: null
+
+Keywords:
+  - Requirement
+
+# First and last name of the authors as a list
+Author: 
+  - null
+
+# Proposed (The requirement has been requested by an authorized source.),
+# In Progress (A business analyst is actively working on crafting the requirement.), 
+# Drafted (The initial version of the requirement has been written.), 
+# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ),
+# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), 
+# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), 
+# Deferred (An approved requirement is now planned for implementation in a later release.), 
+# Deleted (An approved requirement has been removed from the baseline.) or 
+# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.)
+Status: "Proposed"
+  
+# Low, Medium, Hi
+Complexity: null
+# Low, Medium, Hi
+Difficulty: null
+# Nice to have, Low, Medium, Hi or Blocker
+Priority: null 
+Version: 0.0.1
+Milestone: null
+
+# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), 
+# 8, 13, 20, 40, 100
+Estimation: 
+
+# The time required for this requirement
+# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
+Time Spent:  
+
+# who is the source of the demand
+Source: null
+Created: 2022-06-19
+Last Update: null
+
+# The issues that are associated with this requirement
+# You can add an issue by adding a new line to the list with the following format:
+#    - ID: <issue-id>
+# 
+# if the issue is not yet in the project, you can add it by using the following format:
+# Only the Title is required.
+#  - GitlabIntern:
+#    - Title: <issue-title>
+#    - Description: <issue-description>
+#    - Priority: <issue-priority>
+#    - Status: <issue-status>
+#    - Assignee: <issue-assignee>
+#    - Milestone: <issue-milestone>
+#    - Labels: <issue-labels>
+# 
+# Issues:
+#  - GitlabIntern:
+#    - ID: <issue-id>
+
+# the individual items as a list
+Items:
+  - ID: null
+    Name: null
+    # what is it, a image, font, legal information, access data, texts, decisions, etc.
+    Type: null
+    # does this belong to a group
+    group: null
+    Description: null
+    Delivery until: null
+    # when was the project items delivered and by whom?
+    Provided on: null
+    Provided by: null
+
+# https://gdpr-info.eu/art-30-gdpr/
+Privacy:
+  - ID: null
+
+    # Purpose of the data processing, 
+    # for example, shipping an order and handing it over to a shipping service provider.
+    Purposes: null
+
+    # More detailed description of the reason and process of data processing.
+    Description: null
+
+    # Who is responsible for data protection 
+    Contact: null
+
+    # But working with these categories might end up being a bad idea since doing so might 
+    # mean packing different things into one. This leads to either oversimplifications or 
+    # a lot of specifications within a category. It might be advisable to split some of them 
+    # up or to add additional ones to make them fit your business reality.
+    # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees
+    Affected Groups: null
+
+    # 
+    Category: 
+
+    # Example: 5 years from the payment of the salary   
+    Data Retention Period: null
+
+    # On what legal basis is the data collected
+    # Special legal regulation outside the GDPR
+    # Consent of the data subject (Art. 6 para. 1 a) DSG-VO)  use Consent field
+    # Collective agreement (e.g. company agreement, collective agreement)
+    # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG)
+    # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.)
+    # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests
+    Legal Basis: null
+
+    # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or 
+    # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies 
+    # his or her agreement to personal data relating to him or her being processed.
+    Consent: null
+
+    # Where applicable, transfers of personal data to a third country or an international organisation, including 
+    # the identification of that third country or international organisation and, in the case of transfers referred 
+    # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards;
+    Transfers: 
+
+    # Where possible, a general description of the technical and organisational 
+    # security measures referred to in Article 32(1).
+    TOM: null
+
+...
+
+### {{ .Title }} - {{ .ID }}
+
+#### Subheading
+
+- [ ] task 1
+- [ ] task 2
+
+
+{{ if .Items }}
+#### Items
+
+| ID                 | Name         |        Delivery until |                              Provided on |
+|--------------------|--------------|----------------------:|-----------------------------------------:|
+{{ range .Items 
+ }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan"  }} | 
+{{ end }}
+
+{{ end }}
+
+{{ if .Privacy }}
+#### Privacy
+
+{{ range .Privacy }}
+{{ if .Purposes }}**{{ .Purposes }}** {{ end }}**({{ .ID }})** 
+
+{{ if .Description }} {{ .Description }}
+{{ end }}
+|                       |                            |
+|-----------------------|----------------------------|
+| Category              | {{ .Category }}            |  
+| Data Retention Period | {{ .DataRetentionPeriod }} |  
+| Legal Basis           | {{ .LegalBasis }}          |  
+| Transfers             | {{ .Transfers }}           |  
+{{ end }}
+
+{{ end }}
+
+
+
+
+
+
diff --git a/development/examples/example1/req1/1/.test1.md.swp b/development/examples/example1/req1/1/.test1.md.swp
deleted file mode 100644
index fcb2c249530807b835475db75edcee1505ab2982..0000000000000000000000000000000000000000
Binary files a/development/examples/example1/req1/1/.test1.md.swp and /dev/null differ
diff --git a/development/examples/example1/req1/1/test1.md b/development/examples/example1/req1/1/test1.md
index a2b245feecf8fe1de12be44509c266cbc7d89f40..b06ef96f9ccee2ca7fbd4d14938f1b28881dc344 100644
--- a/development/examples/example1/req1/1/test1.md
+++ b/development/examples/example1/req1/1/test1.md
@@ -44,7 +44,7 @@ Estimation: 13
 
 # The time required for this requirement
 # Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
-Time Spent:  1h
+Time Spent:  2h
 
 # who is the source of the demand
 Source: null
@@ -52,7 +52,16 @@ Created: 2022-05-03
 Last Update: null
 
 Issues:
-    - Gitlab-ID: 1
+  - Gitlab: 
+      ID: 1
+  - Gitlab:
+      Title: Test 1
+      Status: offen
+      Labels:
+        - a
+        - b
+
+
 
 # the individual items as a list
 Items: