public void Run()
        {
            var stop = false;

            while (!stop)
            {
                var numberOfPackages = CurrentProject.Packages.Count;

                var actionStartWork = new StartWorkOnPackage(State, CurrentProject, CurrentRecord, DataAccess, 0);

                //List current work state
                ListCurrentWorkState(2, CurrentProject, CurrentRecord, CurrentRecord.LastOpenEntry());
                //List actions
                ListActions(2, CurrentProject, CurrentRecord, CurrentRecord.LastOpenEntry(), actionStartWork);

                var answer = UserInterface.GetUserChar(1, "Select on what to do", null, x => StopReadUserInteraction(x, numberOfPackages), "please type sensible things > ? <", numberOfPackages.ToString().Length);

                answer.TrimEnd('\r').TrimEnd('\n');

                if (actionStartWork.MatchesIdentifier(answer) && int.TryParse(answer, out var number))
                {
                    actionStartWork.SetPackage(CurrentProject.Packages[number]);
                    actionStartWork.Run();
                    stop = true;
                }
                else if (answer.Equals(","))
                {
                    DataAccess.StopWorkOnOpenPackage(State, CurrentRecord);
                    stop = true;
                }
                else if (answer.Equals("+"))
                {
                    CreateNewPackage(State, CurrentProject);
                }
                else if (answer.Equals("-"))
                {
                    DeletePackage(State, CurrentProject);
                }
                else if (answer.Equals("*"))
                {
                    CurrentProject = SwitchProject(State);
                }
                else if (answer.Equals("l"))
                {
                    ListTodaysActivities(State, CurrentProject, CurrentRecord);
                }
                else if (answer.Equals("e"))
                {
                    EditRecordEntries(State, CurrentProject, CurrentRecord);
                }
                else if (answer.Equals("x"))
                {
                    Program.ExportAction();
                }
                else if (answer.Equals("q"))
                {
                    stop = true;
                }

                if (!stop)
                {
                    UserInterface.ClearConsole();
                }
            }
        }
        private void ListActions(int indent, Project currentProject, Record currentRecord, RecordEntry lastOpenEntry, StartWorkOnPackage actionStartWork)
        {
            //Start working on a package
            foreach (Package package in currentProject.Packages)
            {
                UserInterface.PrintSameLine(indent + 1, $"> ");
                UserInterface.PrintSameLine(0, $"{currentProject.Packages.IndexOf(package)}", ConsoleColor.Blue);
                UserInterface.Print(0, $" < \t [{(package.RelevantForTimeTracking ? "X" : "O")}| {package.Abbreviation}, \t {package.DisplayName} ]");
            }
            UserInterface.Print("");

            if (lastOpenEntry != null)
            {
                //stop working on open packages
                UserInterface.Print(indent + 1, $"> , < \t STOP working on the last open Package [ {lastOpenEntry.PackageKey} ]");
                UserInterface.Print("");
            }

            //create new package
            UserInterface.Print(indent + 1, $"> + < \t create new package");

            if (currentProject.Packages.Count > 0)
            {
                //delete a package
                UserInterface.Print(indent + 1, $"> - < \t delete a package(record will be kept)");
            }

            //switch project
            UserInterface.Print(indent + 1, $"> * < \t switch project");

            //export project
            UserInterface.Print(indent + 1, $"> x < \t export a project");

            //export project
            UserInterface.Print(indent + 1, $"> l < \t list todays activities");

            //export project
            UserInterface.Print(indent + 1, $"> e < \t edit todays activities");

            //end Punch It!
            UserInterface.Print(indent + 1, $"> q < \t quit \"Punch It!\"");

            UserInterface.Print("");
        }