+  print <<"EOL";
+
+Standard check done, everything is OK and up to date. Have a look at the --help
+section of this script to see some more advanced checks for developer and
+optional dependancies, as well as LaTeX packages you might need.
+EOL
+  }
+}
+
+if (@missing_modules && $apt && !$check{s}) {
+  print "\nHere are some sample installation lines, choose one appropriate for your system:\n\n";
+  local $Text::Wrap::separator = " \\\n";
+
+  for (keys %install_methods) {
+    my $method = $install_methods{$_};
+    if (my @install_candidates = grep $_, map { $_->{$method->{key}} } @missing_modules) {
+      print "$method->{system}:\n";
+      print wrap("  ", "    ",  $method->{install}, @install_candidates);
+      print $/;
+    }
+  }
+}
+
+exit !!@missing_modules;
+
+sub check_latex {
+  my ($res) = check_kpsewhich();
+  print_result("Looking for LaTeX kpsewhich", $res);
+  if ($res) {
+    check_template_dir($_) for SL::InstallationCheck::template_dirs($master_templates);
+  }
+}
+
+sub check_template_dir {
+  my ($dir) = @_;
+  my $path  = $master_templates . $dir;
+
+  print_header("Checking LaTeX Dependencies for Master Templates '$dir'");
+  kpsewhich($path, 'cls', $_) for SL::InstallationCheck::classes_from_latex($path, '\documentclass');
+  kpsewhich($path, 'sty', $_) for SL::InstallationCheck::classes_from_latex($path, '\usepackage');
+}
+
+our $mastertemplate_path = './templates/print/';
+
+sub check_kpsewhich {
+  return 1 if SL::InstallationCheck::check_kpsewhich();
+
+  print STDERR <<EOL if $v && !$check{s};
++------------------------------------------------------------------------------+
+  Can't find kpsewhich, is there a proper installed LaTeX?
+  On Debian you may run "aptitude install texlive-base-bin"
++------------------------------------------------------------------------------+
+EOL
+  return 0;
+}
+
+sub kpsewhich {
+  my ($dw, $type, $package) = @_;
+  $package =~ s/[^-_0-9A-Za-z]//g;
+  my $type_desc = $type eq 'cls' ? 'document class' : 'package';
+
+  eval { use String::ShellQuote; 1 } or warn "can't load String::ShellQuote" && return;
+     $dw         = shell_quote $dw;
+  my $e_package  = shell_quote $package;
+  my $e_type     = shell_quote $type;
+
+  my $exit = system(qq|TEXINPUTS=".:$dw:" kpsewhich $e_package.$e_type > /dev/null|);
+  my $res  = $exit > 0 ? 0 : 1;
+
+  print_result("Looking for LaTeX $type_desc $package", $res);
+  if (!$res) {
+    print STDERR <<EOL if $v && !$check{s};
++------------------------------------------------------------------------------+
+  LaTeX $type_desc $package could not be loaded.
+
+  On Debian you may find the needed *.deb package with:
+    apt-file search $package.$type
+
+  Maybe you need to install apt-file first by:
+    aptitude install apt-file && apt-file update
++------------------------------------------------------------------------------+
+EOL
+  }
+}
+
+sub check_module {
+  my ($module, %role) = @_;
+
+  my $line = "Looking for $module->{fullname}";
+  $line   .= " (from $module->{dist_name})" if $module->{dist_name};
+  my ($res, $ver) = SL::InstallationCheck::module_available($module->{"name"}, $module->{version});
+  if ($res) {
+    my $ver_string = ref $ver && $ver->can('numify') ? $ver->numify : $ver ? $ver : 'no version';
+    print_line($line, $ver_string, 'green');
+  } else {
+    print_result($line, $res);
+  }
+
+
+  return if $res;
+
+  push @missing_modules, $module;
+
+  my $needed_text =
+      $role{optional} ? 'It is OPTIONAL for kivitendo but RECOMMENDED for improved functionality.'
+    : $role{required} ? 'It is NEEDED by kivitendo and must be installed.'
+    : $role{devel}    ? 'It is OPTIONAL for kivitendo and only useful for developers.'
+    :                   'It is not listed as a dependancy yet. Please tell this the developers.';
+
+  my @source_texts = module_source_texts($module);
+  local $" = $/;
+  print STDERR <<EOL if $v && !$check{s};
++------------------------------------------------------------------------------+
+  $module->{fullname} could not be loaded.
+
+  This module is either too old or not available on your system.
+  $needed_text
+
+  Here are some ideas how to get it:
+
+@source_texts
++------------------------------------------------------------------------------+
+EOL
+}
+
+sub module_source_texts {
+  my ($module) = @_;
+  my @texts;
+  for my $key (keys %install_methods) {
+    my $method = $install_methods{$key};
+    push @texts, <<"EOL" if $module->{$method->{key}};
+  - Using $method->{system} you can install it with $key:
+      $method->{install} $module->{$method->{key}}
+EOL