Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.cs	(revision 12857)
@@ -30,4 +30,8 @@
       throw new NotImplementedException();
     }
+
+    partial void OnCreated() {
+      LogFactory.GetLogger(this.GetType().Namespace).Log("HiveDataContext created");
+    }
   }
 }
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Initialize Hive Database.sql
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Initialize Hive Database.sql	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Initialize Hive Database.sql	(revision 12857)
@@ -1,4 +1,21 @@
-﻿USE [HeuristicLab.Hive-3.3]
-/* create and initialize hive database tables */
+﻿/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+USE [HeuristicLab.Hive-3.3]
 
 EXEC sp_configure filestream_access_level, 2
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Prepare Hive Database.sql
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Prepare Hive Database.sql	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Prepare Hive Database.sql	(revision 12857)
@@ -1,10 +1,23 @@
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* this script is supposed to be executed after the plain DB is generated by the linq-to-sql schema */
 USE [HeuristicLab.Hive-3.3]
-/* this script is supposed to be executed after the plain DB is generated by the linq-to-sql schema */
-/* adds default values */
-/* creates delete and update cascades */
-/* creates indices */
-/* creates views */
-/* creates triggers */
-
 
 ALTER TABLE [dbo].[AssignedResources]  DROP  CONSTRAINT [Task_AssignedResource]
@@ -97,31 +110,16 @@
 GO
 
-/* views */
--- =============================================
--- Author:		cneumuel
--- Description:	Returns the first StateLog entry for each job
--- =============================================
-CREATE VIEW [dbo].[view_FirstState]
-AS
-SELECT     sl.TaskId, sl.DateTime, sl.State
-FROM         dbo.StateLog AS sl INNER JOIN
-                          (SELECT     TaskId, MIN(DateTime) AS DateTime
-                            FROM          dbo.StateLog
-                            GROUP BY TaskId) AS minDate ON sl.DateTime = minDate.DateTime AND sl.TaskId = minDate.TaskId
-
+-- speed up joins between Job and Task
+CREATE NONCLUSTERED INDEX [TaskJobIdIndex]
+ON [dbo].[Task] ([JobId])
+INCLUDE ([TaskId],[TaskState],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[CoresNeeded],[MemoryNeeded],[IsParentTask],[FinishWhenChildJobsFinished],[Command],[IsPrivileged])
 GO
 
--- =============================================
--- Author:		cneumuel
--- Description:	Returns the last StateLog entry for each job
--- =============================================
-CREATE VIEW [dbo].[view_LastState]
-AS
-SELECT     sl.TaskId, sl.DateTime, sl.State
-FROM         dbo.StateLog AS sl INNER JOIN
-                          (SELECT     TaskId, MAX(DateTime) AS DateTime
-                            FROM          dbo.StateLog
-                            GROUP BY TaskId) AS minDate ON sl.DateTime = minDate.DateTime AND sl.TaskId = minDate.TaskId
+-- this is an index to speed up the GetWaitingTasks() method 
+CREATE NONCLUSTERED INDEX [TaskGetWaitingTasksIndex]
+ON [dbo].[Task] ([TaskState],[IsParentTask],[FinishWhenChildJobsFinished],[CoresNeeded],[MemoryNeeded])
+INCLUDE ([TaskId],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[Command],[JobId],[IsPrivileged])
 GO
+
 
 /****** Object:  Trigger [dbo].[tr_JobDeleteCascade]    Script Date: 04/19/2011 16:31:53 ******/
@@ -152,20 +150,4 @@
 CREATE TRIGGER [dbo].[tr_TaskDeleteCascade] ON [dbo].[Task] INSTEAD OF DELETE AS 
 BEGIN
-    SELECT 
-        he.OwnerUserId AS UserId, 
-        ROUND(SUM(j.ExecutionTimeMs) / 1000, 0) AS ExecutionTimeS,  
-        ROUND(ISNULL(SUM(CASE ls.State WHEN 'Finished' THEN j.ExecutionTimeMs END), 0) / 1000, 0) AS ExecutionTimeSFinishedJobs,
-        ISNULL(SUM(CASE ls.State WHEN 'Finished' THEN DATEDIFF(s, fs.DateTime, ls.DateTime) ELSE 0 END), 0) AS StartToEndTimeS
-    FROM 
-        deleted j, 
-        Job he, 
-        view_FirstState fs, 
-        view_LastState ls
-    WHERE 
-        he.JobId = j.JobId AND 
-        fs.TaskId = j.TaskId AND 
-        ls.TaskId = j.TaskId
-    GROUP BY he.OwnerUserId
-
     -- recursively delete jobs
     CREATE TABLE #Table( 
@@ -194,17 +176,3 @@
 GO
 
--- ============================================================
--- Description:	Create indices to speed up execution of queries
--- ============================================================
 
--- speed up joins between Job and Task
-CREATE NONCLUSTERED INDEX [TaskJobIdIndex]
-ON [dbo].[Task] ([JobId])
-INCLUDE ([TaskId],[TaskState],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[CoresNeeded],[MemoryNeeded],[IsParentTask],[FinishWhenChildJobsFinished],[Command],[IsPrivileged])
-GO
-
--- this is an index to speed up the GetWaitingTasks() method 
-CREATE NONCLUSTERED INDEX [TaskGetWaitingTasksIndex]
-ON [dbo].[Task] ([TaskState],[IsParentTask],[FinishWhenChildJobsFinished],[CoresNeeded],[MemoryNeeded])
-INCLUDE ([TaskId],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[Command],[JobId],[IsPrivileged])
-GO
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj	(revision 12857)
@@ -158,5 +158,4 @@
     <Compile Include="Scheduler\JobInfoForScheduler.cs" />
     <Compile Include="Scheduler\RoundRobinTaskScheduler.cs" />
-    <Compile Include="Settings.cs" />
     <None Include="app.config" />
     <None Include="Plugin.cs.frame" />
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/NewHiveService.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/NewHiveService.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/NewHiveService.cs	(revision 12857)
@@ -22,7 +22,5 @@
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
 using System.Linq;
-using System.Runtime.CompilerServices;
 using System.Security;
 using System.ServiceModel;
@@ -70,5 +68,5 @@
     public Guid AddTask(DT.Task task, DT.TaskData taskData, IEnumerable<Guid> resourceIds) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddTask")) {
         var taskDao = pm.TaskDao;
@@ -102,5 +100,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       IEnumerable<Guid> resourceIds;
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddChildTask")) {
         var assignedResourceDao = pm.AssignedResourceDao;
@@ -118,5 +116,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Read);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetTask")) {
         var taskDao = pm.TaskDao;
@@ -128,23 +126,8 @@
     }
 
-    public IEnumerable<DT.Task> GetTasks() {
-      // unused
-      throw new NotImplementedException();
-    }
-
-    public IEnumerable<DT.LightweightTask> GetLightweightTasks(IEnumerable<Guid> taskIds) {
-      // unused
-      throw new NotImplementedException();
-    }
-
-    public IEnumerable<DT.LightweightTask> GetLightweightChildTasks(Guid? parentTaskId, bool recursive, bool includeParent) {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public IEnumerable<DT.LightweightTask> GetLightweightJobTasks(Guid jobId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, Permission.Read);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetLightweightJobTasks")) {
         var taskDao = pm.TaskDao;
@@ -171,5 +154,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, Permission.Read);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetLightweightJobTasksWithoutStateLog")) {
         var taskDao = pm.TaskDao;
@@ -194,5 +177,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Read);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetTaskData")) {
         var taskDataDao = pm.TaskDataDao;
@@ -204,5 +187,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskDto.Id, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateTask")) {
         var taskDao = pm.TaskDao;
@@ -218,5 +201,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskDto.Id, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateTaskData")) {
         var taskDao = pm.TaskDao;
@@ -233,21 +216,10 @@
     }
 
-    public void DeleteTask(Guid taskId) {
-      // unused
-      throw new NotImplementedException();
-    }
-
-    public void DeleteChildTasks(Guid parentTaskId) {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public DT.Task UpdateTaskState(Guid taskId, DT.TaskState taskState, Guid? slaveId, Guid? userId, string exception) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateTaskState")) {
         var taskDao = pm.TaskDao;
-        var stateLogDao = pm.StateLogDao;
         return pm.UseTransaction(() => {
           var task = taskDao.GetById(taskId);
@@ -264,5 +236,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("StopTask")) {
         var taskDao = pm.TaskDao;
@@ -284,5 +256,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("PauseTask")) {
         var taskDao = pm.TaskDao;
@@ -301,5 +273,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
       AuthorizationManager.AuthorizeForTask(taskId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("RestartTask")) {
         var taskDao = pm.TaskDao;
@@ -318,5 +290,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(id, DT.Permission.Read);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetJob")) {
         var jobDao = pm.JobDao;
@@ -354,5 +326,5 @@
     public IEnumerable<DT.Job> GetJobs() {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetJobs")) {
         var jobDao = pm.JobDao;
@@ -377,6 +349,4 @@
               .ToList();
           foreach (var job in jobs) {
-            // TODO: improve performance of authorization (batch authorization)
-            AuthorizationManager.AuthorizeForJob(job.Id, DT.Permission.Read);
             var statistic = statistics.FirstOrDefault(x => x.Key == job.Id);
             if (statistic != null) {
@@ -398,12 +368,7 @@
     }
 
-    public IEnumerable<DT.Job> GetAllJobs() {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public Guid AddJob(DT.Job jobDto) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddJob")) {
         var jobDao = pm.JobDao;
@@ -428,5 +393,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobDto.Id, DT.Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateJob")) {
         bool exists = true;
@@ -450,5 +415,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, DT.Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("DeleteJob")) {
         var jobDao = pm.JobDao;
@@ -466,5 +431,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GrantPermission")) {
         var jobPermissionDao = pm.JobPermissionDao;
@@ -480,5 +445,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("RevokePermission")) {
         var jobPermissionDao = pm.JobPermissionDao;
@@ -494,5 +459,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForJob(jobId, Permission.Full);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetJobPermissions")) {
         var jobPermissionDao = pm.JobPermissionDao;
@@ -516,5 +481,5 @@
         slaveInfo.OwnerUserId = UserManager.CurrentUserId;
       }
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("Hello")) {
         var slaveDao = pm.SlaveDao;
@@ -539,5 +504,5 @@
     public void GoodBye(Guid slaveId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Slave);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GoodBye")) {
         var slaveDao = pm.SlaveDao;
@@ -575,5 +540,5 @@
     public DT.Plugin GetPlugin(Guid pluginId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetPlugin")) {
         var pluginDao = pm.PluginDao;
@@ -582,12 +547,7 @@
     }
 
-    public DT.Plugin GetPluginByHash(byte[] hash) {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public Guid AddPlugin(DT.Plugin plugin, List<DT.PluginData> pluginData) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddPlugin")) {
         var pluginDao = pm.PluginDao;
@@ -613,5 +573,5 @@
     public IEnumerable<DT.Plugin> GetPlugins() {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetPlugins")) {
         var pluginDao = pm.PluginDao;
@@ -626,5 +586,5 @@
     public IEnumerable<DT.PluginData> GetPluginDatas(List<Guid> pluginIds) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetPluginDatas")) {
         var pluginDataDao = pm.PluginDataDao;
@@ -636,9 +596,4 @@
       }
     }
-
-    public void DeletePlugin(Guid pluginId) {
-      // unused
-      throw new NotImplementedException();
-    }
     #endregion
 
@@ -646,5 +601,5 @@
     public void GrantResourcePermissions(Guid resourceId, Guid[] grantedUserIds) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GrantResourcePermissions")) {
         pm.UseTransaction(() => {
@@ -666,5 +621,5 @@
     public void RevokeResourcePermissions(Guid resourceId, Guid[] grantedUserIds) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("RevokeResourcePermissions")) {
         var resourcePermissionDao = pm.ResourcePermissionDao;
@@ -678,5 +633,5 @@
     public IEnumerable<DT.ResourcePermission> GetResourcePermissions(Guid resourceId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetResourcePermissions")) {
         var resourcePermissionDao = pm.ResourcePermissionDao;
@@ -689,15 +644,8 @@
     #endregion
 
-    #region Resource Methods
-    public IEnumerable<DT.Resource> GetChildResources(Guid resourceId) {
-      // unused
-      throw new NotImplementedException();
-    }
-    #endregion
-
     #region Slave Methods
     public Guid AddSlave(DT.Slave slaveDto) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddSlave")) {
         var slaveDao = pm.SlaveDao;
@@ -712,5 +660,5 @@
     public Guid AddSlaveGroup(DT.SlaveGroup slaveGroupDto) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddSlaveGroup")) {
         var slaveGroupDao = pm.SlaveGroupDao;
@@ -728,5 +676,5 @@
     public DT.Slave GetSlave(Guid slaveId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetSlave")) {
         var slaveDao = pm.SlaveDao;
@@ -735,13 +683,8 @@
     }
 
-    public DT.SlaveGroup GetSlaveGroup(Guid slaveGroupId) {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public IEnumerable<DT.Slave> GetSlaves() {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetSlaves")) {
         var slaveDao = pm.SlaveDao;
@@ -768,5 +711,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetSlaveGroups")) {
         var slaveGroupDao = pm.SlaveGroupDao;
@@ -792,5 +735,5 @@
     public void UpdateSlave(DT.Slave slaveDto) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateSlave")) {
         var slaveDao = pm.SlaveDao;
@@ -809,5 +752,5 @@
     public void UpdateSlaveGroup(DT.SlaveGroup slaveGroupDto) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateSlaveGroup")) {
         var slaveGroupDao = pm.SlaveGroupDao;
@@ -827,5 +770,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForResourceAdministration(slaveId);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("DeleteSlave")) {
         var slaveDao = pm.SlaveDao;
@@ -839,5 +782,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForResourceAdministration(slaveGroupId);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("DeleteSlaveGroup")) {
         var slaveGroupDao = pm.SlaveGroupDao;
@@ -850,5 +793,5 @@
     public void AddResourceToGroup(Guid slaveGroupId, Guid resourceId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddResourceToGroup")) {
         var resourceDao = pm.ResourceDao;
@@ -863,5 +806,5 @@
     public void RemoveResourceFromGroup(Guid slaveGroupId, Guid resourceId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("RemoveResourceFromGroup")) {
         var resourceDao = pm.ResourceDao;
@@ -876,5 +819,5 @@
     public Guid GetResourceId(string resourceName) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetResourceId")) {
         var resourceDao = pm.ResourceDao;
@@ -886,14 +829,9 @@
     }
 
-    public IEnumerable<DT.Task> GetTasksByResourceId(Guid resourceId) {
-      // unused
-      throw new NotImplementedException();
-    }
-
     public void TriggerEventManager(bool force) {
-      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Slave);
+      RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator);
       // use a serializable transaction here to ensure not two threads execute this simultaniously (mutex-lock would not work since IIS may use multiple AppDomains)
       bool cleanup;
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("TriggerEventManager")) {
         cleanup = false;
@@ -916,5 +854,5 @@
     public int GetNewHeartbeatInterval(Guid slaveId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Slave);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetNewHeartbeatInterval")) {
         var slaveDao = pm.SlaveDao;
@@ -934,5 +872,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForResourceAdministration(downtimeDto.ResourceId);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("AddDowntime")) {
         var downtimeDao = pm.DowntimeDao;
@@ -947,5 +885,5 @@
     public void DeleteDowntime(Guid downtimeId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("DeleteDowntime")) {
         var downtimeDao = pm.DowntimeDao;
@@ -960,5 +898,5 @@
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
       AuthorizationManager.AuthorizeForResourceAdministration(downtimeDto.ResourceId);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("UpdateDowntime")) {
         var downtimeDao = pm.DowntimeDao;
@@ -977,5 +915,5 @@
     public IEnumerable<DT.Downtime> GetDowntimesForResource(Guid resourceId) {
       RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetDowntimesForResource")) {
         var downtimeDao = pm.DowntimeDao;
@@ -1004,5 +942,5 @@
     #region UserPriorities Methods
     public IEnumerable<DT.UserPriority> GetUserPriorities() {
-      using (var pm = PersistenceManager)
+      var pm = PersistenceManager;
       using (new PerformanceLogger("GetUserPriorities")) {
         var userPriorityDao = pm.UserPriorityDao;
@@ -1024,4 +962,5 @@
         task.Command = null;
       } else if (taskStateEntity == DA.TaskState.Paused && task.Command != null) {
+        // slave paused and uploaded the task (no user-command) -> set waiting.
         taskStateEntity = DA.TaskState.Waiting;
       }
@@ -1047,11 +986,4 @@
       return resource;
     }
-
-    [MethodImpl(MethodImplOptions.NoInlining)]
-    public string GetCurrentMethod() {
-      StackTrace st = new StackTrace();
-      StackFrame sf = st.GetFrame(1);
-      return sf.GetMethod().Name;
-    }
     #endregion
   }
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/PerformanceLogger.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/PerformanceLogger.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/PerformanceLogger.cs	(revision 12857)
@@ -32,10 +32,15 @@
     public PerformanceLogger(string name) {
       this.name = name;
-      stopwatch = new Stopwatch();
-      stopwatch.Start();
+      if (Properties.Settings.Default.ProfileServicePerformance) {
+        stopwatch = new Stopwatch();
+        stopwatch.Start();
+      }
     }
     public void Dispose() {
-      stopwatch.Stop();
-      LogFactory.GetLogger(this.GetType().Namespace).Log(string.Format("{0} took {1}ms", name, stopwatch.ElapsedMilliseconds));
+      if (Properties.Settings.Default.ProfileServicePerformance) {
+        stopwatch.Stop();
+        LogFactory.GetLogger(this.GetType().Namespace)
+          .Log(string.Format("{0} took {1}ms", name, stopwatch.ElapsedMilliseconds));
+      }
     }
   }
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.Designer.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.Designer.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.Designer.cs	(revision 12857)
@@ -1,98 +1,107 @@
 ﻿//------------------------------------------------------------------------------
 // <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34014
+//     Dieser Code wurde von einem Tool generiert.
+//     Laufzeitversion:4.0.30319.42000
 //
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
+//     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+//     der Code erneut generiert wird.
 // </auto-generated>
 //------------------------------------------------------------------------------
 
 namespace HeuristicLab.Services.Hive.Properties {
-
-
-  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
-  public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
-    private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-    public static Settings Default {
-      get {
-        return defaultInstance;
-      }
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
+    public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")]
+        public global::System.TimeSpan SlaveHeartbeatTimeout {
+            get {
+                return ((global::System.TimeSpan)(this["SlaveHeartbeatTimeout"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:05:30")]
+        public global::System.TimeSpan CalculatingJobHeartbeatTimeout {
+            get {
+                return ((global::System.TimeSpan)(this["CalculatingJobHeartbeatTimeout"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:15:00")]
+        public global::System.TimeSpan TransferringJobHeartbeatTimeout {
+            get {
+                return ((global::System.TimeSpan)(this["TransferringJobHeartbeatTimeout"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("False")]
+        public bool TriggerEventManagerInHeartbeat {
+            get {
+                return ((bool)(this["TriggerEventManagerInHeartbeat"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")]
+        public global::System.TimeSpan CleanupInterval {
+            get {
+                return ((global::System.TimeSpan)(this["CleanupInterval"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("3.00:00:00")]
+        public global::System.TimeSpan SweepInterval {
+            get {
+                return ((global::System.TimeSpan)(this["SweepInterval"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:00:20")]
+        public global::System.TimeSpan SchedulingPatience {
+            get {
+                return ((global::System.TimeSpan)(this["SchedulingPatience"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool ProfileServicePerformance {
+            get {
+                return ((bool)(this["ProfileServicePerformance"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")]
+        public global::System.TimeSpan GenerateStatisticsInterval {
+            get {
+                return ((global::System.TimeSpan)(this["GenerateStatisticsInterval"]));
+            }
+        }
     }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")]
-    public global::System.TimeSpan SlaveHeartbeatTimeout {
-      get {
-        return ((global::System.TimeSpan)(this["SlaveHeartbeatTimeout"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:05:30")]
-    public global::System.TimeSpan CalculatingJobHeartbeatTimeout {
-      get {
-        return ((global::System.TimeSpan)(this["CalculatingJobHeartbeatTimeout"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:15:00")]
-    public global::System.TimeSpan TransferringJobHeartbeatTimeout {
-      get {
-        return ((global::System.TimeSpan)(this["TransferringJobHeartbeatTimeout"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("False")]
-    public bool TriggerEventManagerInHeartbeat {
-      get {
-        return ((bool)(this["TriggerEventManagerInHeartbeat"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")]
-    public global::System.TimeSpan CleanupInterval {
-      get {
-        return ((global::System.TimeSpan)(this["CleanupInterval"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("3.00:00:00")]
-    public global::System.TimeSpan SweepInterval {
-      get {
-        return ((global::System.TimeSpan)(this["SweepInterval"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:00:20")]
-    public global::System.TimeSpan SchedulingPatience {
-      get {
-        return ((global::System.TimeSpan)(this["SchedulingPatience"]));
-      }
-    }
-
-    [global::System.Configuration.ApplicationScopedSettingAttribute()]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
-    public global::System.TimeSpan GenerateStatisticsInterval {
-      get {
-        return ((global::System.TimeSpan)(this["GenerateStatisticsInterval"]));
-      }
-    }
-  }
 }
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.settings
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.settings	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.settings	(revision 12857)
@@ -24,4 +24,10 @@
       <Value Profile="(Default)">00:00:20</Value>
     </Setting>
+    <Setting Name="ProfileServicePerformance" Type="System.Boolean" Scope="Application">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="GenerateStatisticsInterval" Type="System.TimeSpan" Scope="Application">
+      <Value Profile="(Default)">00:03:00</Value>
+    </Setting>
   </Settings>
 </SettingsFile>
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs	(revision 12857)
@@ -41,13 +41,4 @@
 
     [OperationContract]
-    IEnumerable<Task> GetTasks();
-
-    [OperationContract]
-    IEnumerable<LightweightTask> GetLightweightTasks(IEnumerable<Guid> taskIds);
-
-    [OperationContract]
-    IEnumerable<LightweightTask> GetLightweightChildTasks(Guid? parentTaskId, bool recursive, bool includeParent);
-
-    [OperationContract]
     IEnumerable<LightweightTask> GetLightweightJobTasks(Guid jobId);
 
@@ -65,10 +56,4 @@
 
     [OperationContract]
-    void DeleteTask(Guid taskId);
-
-    [OperationContract]
-    void DeleteChildTasks(Guid parentTaskId);
-
-    [OperationContract]
     Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception);
     #endregion
@@ -89,17 +74,7 @@
     Job GetJob(Guid id);
 
-    /// <summary>
-    /// Returns all task for the current user
-    /// </summary>
     [OperationContract]
     IEnumerable<Job> GetJobs();
 
-    /// <summary>
-    /// Returns all task in the hive (only for admins)
-    /// </summary>
-    /// <returns></returns>
-    [OperationContract]
-    IEnumerable<Job> GetAllJobs();
-
     [OperationContract]
     Guid AddJob(Job jobDto);
@@ -142,7 +117,4 @@
     [OperationContract]
     Plugin GetPlugin(Guid pluginId);
-
-    [OperationContract]
-    Plugin GetPluginByHash(byte[] hash);
 
     [OperationContract]
@@ -155,7 +127,4 @@
     [OperationContract]
     IEnumerable<PluginData> GetPluginDatas(List<Guid> pluginIds);
-
-    [OperationContract]
-    void DeletePlugin(Guid pluginId);
     #endregion
 
@@ -171,9 +140,4 @@
     #endregion
 
-    #region Resource Methods
-    [OperationContract]
-    IEnumerable<Resource> GetChildResources(Guid resourceId);
-    #endregion
-
     #region Slave Methods
     [OperationContract]
@@ -187,7 +151,4 @@
 
     [OperationContract]
-    SlaveGroup GetSlaveGroup(Guid slaveGroupId);
-
-    [OperationContract]
     IEnumerable<Slave> GetSlaves();
 
@@ -215,7 +176,4 @@
     [OperationContract]
     Guid GetResourceId(string resourceName);
-
-    [OperationContract]
-    IEnumerable<Task> GetTasksByResourceId(Guid resourceId);
 
     [OperationContract]
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs	(revision 12857)
@@ -131,4 +131,5 @@
       }
     }
+
     private ITaskScheduler newtaskScheduler;
     public ITaskScheduler NewTaskScheduler {
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Settings.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/Settings.cs	(revision 12856)
+++ 	(revision )
@@ -1,49 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Services.Hive.Properties {
-    
-    
-    // This class allows you to handle specific events on the settings class:
-    //  The SettingChanging event is raised before a setting's value is changed.
-    //  The PropertyChanged event is raised after a setting's value is changed.
-    //  The SettingsLoaded event is raised after the setting values are loaded.
-    //  The SettingsSaving event is raised before the setting values are saved.
-    public sealed partial class Settings {
-        
-        public Settings() {
-            // // To add event handlers for saving and changing settings, uncomment the lines below:
-            //
-            // this.SettingChanging += this.SettingChangingEventHandler;
-            //
-            // this.SettingsSaving += this.SettingsSavingEventHandler;
-            //
-        }
-        
-        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
-            // Add code to handle the SettingChangingEvent event here.
-        }
-        
-        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
-            // Add code to handle the SettingsSaving event here.
-        }
-    }
-}
Index: branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/app.config
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/app.config	(revision 12856)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/app.config	(revision 12857)
@@ -29,5 +29,12 @@
                 <value>00:00:20</value>
             </setting>
+            <setting name="ProfileServicePerformance" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="GenerateStatisticsInterval" serializeAs="String">
+                <value>00:03:00</value>
+            </setting>
         </HeuristicLab.Services.Hive.Properties.Settings>
     </applicationSettings>
-<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
+</configuration>
