function ($scope, $state, $timeout, $window, $q, RaporttiService, OrganisaatioService) {

        $scope.organisaatiolajit = t.organisaatiolajit;

        $scope.avustus = {
          options: avustusGraph
        };

        $scope.avustusdetail = {
          options: avustusDetailGraph
        };

        $scope.avustusperasukas = {
          options: avustusPerAsukasGraph
        };

        $scope.organisaatiolaji = _.find([$state.params.organisaatiolaji, 'ALL'], c.isNotBlank);
        $scope.avustustyyppi = _.find([$state.params.avustustyyppi, 'M'], c.isNotBlank);

        subtitle.text = t.organisaatiolajit.$nimi($scope.organisaatiolaji);

        d.createTabFunctions($scope, 'organisaatiolaji');
        $scope.toTab = function (tyyppi) {
          $state.go($state.current.name, {organisaatiolaji: tyyppi});
        };

        $scope.$watch("avustustyyppi", (avustustyyppi) => {
          _.merge(avustusDetailGraph, avustustyyppiDetailGraph[avustustyyppi]);
        });

        RaporttiService.haeAvustus($scope.organisaatiolaji).then(avustukset => {
          $scope.avustus.csv = avustukset;
          $scope.avustus.data = _.map(_.values(_.groupBy(_.tail(avustukset), row => row[0])),
            rows => ({
              key: avustustyypit.$nimi(rows[0][0]),
              values: rows
            }));
        });

        function loadAvustusOrganisaatioTilasto(promise, scopename) {
          $q.all([promise, OrganisaatioService.hae()])
          .then(([avustukset, organisaatiot]) => {
            $scope[scopename].csv = t.addOrganisaationimiColumn(avustukset, organisaatiot);
            $scope[scopename].data = t.toOrganisaatioSeriesNvd3(avustukset, organisaatiot);
          });
        }

        loadAvustusOrganisaatioTilasto(RaporttiService.haeAvustusDetails($scope.organisaatiolaji), 'avustusdetail');
        loadAvustusOrganisaatioTilasto(RaporttiService.haeAvustusPerAsukas($scope.organisaatiolaji), 'avustusperasukas');
      }
      function ($scope, $state, $timeout, $window, $q, RaporttiService, OrganisaatioService) {

        $scope.organisaatiolajit = t.organisaatiolajit;

        $scope.asiakastyytyvaisyys = createGraph('Tyytyväisyys joukkoliikenteeseen', '%');
        $scope.nousut = createGraph('Matkustajamäärät', 'henkilöä');
        $scope.lahdot = createGraph('Lähtöjen määrä', 'kpl');
        $scope.linjakilometrit = createGraph('Linjakilometrit', 'km');
        $scope.avustusperasukas = createGraph('Valtion rahoitus asukasta kohden', '€');
        $scope.omarahoitusperasukas = createGraph('Toimivaltaisen viranomaisen omarahoitus asukasta kohden', '€');
        $scope.psanettokustannus = createGraph('PSA-liikenteen nettokustannukset (kunnan ja valtion maksama subventio)', '€');

        $scope.organisaatiolaji = _.find([$state.params.organisaatiolaji, 'ALL'], c.isNotBlank);

        subtitle.text = t.organisaatiolajit.$nimi($scope.organisaatiolaji);

        d.createTabFunctions($scope, 'organisaatiolaji');
        $scope.toTab = function (tyyppi) {
          $state.go($state.current.name, {organisaatiolaji: tyyppi});
        };

        function loadTunnusluku(tunnuslukuid, scopename) {
          $q.all([RaporttiService.haeTunnuslukuTilasto(tunnuslukuid, $scope.organisaatiolaji, {}, ['organisaatioid', 'vuosi']),
                OrganisaatioService.hae()])
          .then(([data, organisaatiot]) => {
            $scope[scopename].csv = t.addOrganisaationimiColumn(data, organisaatiot);
            $scope[scopename].data = t.toOrganisaatioSeriesNvd3(data, organisaatiot);
          })
        }

        loadTunnusluku('alue-asiakastyytyvaisyys', 'asiakastyytyvaisyys');
        loadTunnusluku('nousut', 'nousut');
        loadTunnusluku('lahdot', 'lahdot');
        loadTunnusluku('linjakilometrit', 'linjakilometrit');

        function loadAvustusOrganisaatioTilasto(promise, scopename) {
          $q.all([promise, OrganisaatioService.hae()])
          .then(([avustukset, organisaatiot]) => {
            $scope[scopename].csv = t.addOrganisaationimiColumn(avustukset, organisaatiot);
            $scope[scopename].data = t.toOrganisaatioSeriesNvd3(avustukset, organisaatiot);
          });
        }

        loadAvustusOrganisaatioTilasto(RaporttiService.haeAvustusPerAsukas($scope.organisaatiolaji), 'avustusperasukas');
        loadAvustusOrganisaatioTilasto(RaporttiService.haeOmarahoitusPerAsukas($scope.organisaatiolaji), 'omarahoitusperasukas');

        loadAvustusOrganisaatioTilasto(RaporttiService.haePSANettokustannus($scope.organisaatiolaji), 'psanettokustannus');
      }