diff --git a/src/de/deadlocker8/budgetmaster/logic/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/Helpers.java
index a3761e796fd6ad0bd0a435ffe141d0d397e9fa34..2f72888eb3be208cac864d981b54b74ff7422cb3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Helpers.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Helpers.java
@@ -5,6 +5,10 @@ import java.net.URLEncoder;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
 
 public class Helpers
 {
@@ -31,4 +35,46 @@ public class Helpers
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 		return date.format(formatter);
 	}
+	
+	public static ArrayList<CategoryBudget> getCategoryBudgets(CategoryHandler categoryHandler, ArrayList<Payment> payments)
+	{
+		ArrayList<CategoryBudget> budgets = new ArrayList<>();
+		
+		for(Category currentCategory : categoryHandler.getCategories())
+		{
+			budgets.add(new CategoryBudget(currentCategory.getName(), currentCategory.getColor(), 0));
+			CategoryBudget currentBudget = budgets.get(budgets.size() - 1);
+			for(Payment currentPayment : payments)
+			{
+				//filter rest
+				if(currentCategory.getID() != 2)
+				{
+					if(currentCategory.getID() == currentPayment.getCategoryID())
+					{
+						currentBudget.setBudget(currentBudget.getBudget() + currentPayment.getAmount());
+					}
+				}
+			}
+		}
+		
+		//filter empty categories
+		Iterator<CategoryBudget> iterator = budgets.iterator();
+		while(iterator.hasNext())
+		{		
+			if(iterator.next().getBudget() == 0)
+			{
+				iterator.remove();
+			}
+		}
+		
+		Collections.sort(budgets, new Comparator<CategoryBudget>() {
+	        @Override
+	        public int compare(CategoryBudget budget1, CategoryBudget budget2)
+	        {
+	            return  Double.compare(budget1.getBudget(), budget2.getBudget());
+	        }
+	    });		
+		
+		return budgets;		
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java b/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
index 0ce98e44d4587a4bf01cca79fdafe24ffc00dbf0..f7e9f6e4322679ede1540be594def47223937b6f 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
+++ b/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
@@ -128,33 +128,7 @@ public class ServerConnection
 		BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
 		reader.close();
 	}
-
-	/*
-	 * CategoryBudget
-	 */
-	@Deprecated
-	public ArrayList<CategoryBudget> getCategoryBudgets(int year, int month) throws Exception
-	{
-		URL url = new URL(settings.getUrl() + "/categorybudget?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&year=" + year + "&month=" + month);
-		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
-		httpsCon.setDoOutput(true);
-		httpsCon.setRequestMethod("GET");
-
-		if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK)
-		{
-			String result = Read.getStringFromInputStream(httpsCon.getInputStream());
-			// required by GSON
-			Type listType = new TypeToken<ArrayList<CategoryBudget>>()
-			{
-			}.getType();
-			return gson.fromJson(result, listType);
-		}
-		else
-		{
-			return null;
-		}
-	}
-
+	
 	/*
 	 * Payment
 	 */
diff --git a/src/de/deadlocker8/budgetmaster/main/Main.java b/src/de/deadlocker8/budgetmaster/main/Main.java
index 7ebbcc8cb43135999cbe513da6b098dc0206ff6f..de459fc7283f353dffd55a22b23e6ef6b476d50c 100644
--- a/src/de/deadlocker8/budgetmaster/main/Main.java
+++ b/src/de/deadlocker8/budgetmaster/main/Main.java
@@ -28,7 +28,7 @@ public class Main extends Application
 			FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/GUI.fxml"));
 			Parent root = (Parent)loader.load();
 
-			Scene scene = new Scene(root, 600, 600);			
+			Scene scene = new Scene(root, 600, 650);			
 
 			((Controller)loader.getController()).init(stage);
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java
index 9cfea20feb8d49ea16fc71f82d2bb88d9adf170c..8d7c3ed43a9b7df79947e63c05b17f7578a56ec2 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java
@@ -11,6 +11,7 @@ import org.joda.time.DateTime;
 
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.CategoryHandler;
+import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.ServerConnection;
@@ -260,8 +261,7 @@ public class Controller implements Refreshable
 	{
 		try
 		{
-			ServerConnection connection = new ServerConnection(settings);
-			categoryBudgets = connection.getCategoryBudgets(currentDate.getYear(), currentDate.getMonthOfYear());		
+			ServerConnection connection = new ServerConnection(settings);			
 			
 			payments = new ArrayList<>();
 			payments.addAll(connection.getPayments(currentDate.getYear(), currentDate.getMonthOfYear()));
@@ -278,9 +278,11 @@ public class Controller implements Refreshable
 				int rest = connection.getRestForAllPreviousMonths(currentDate.getYear(), currentDate.getMonthOfYear());
 				//categoryID 2 = Rest
 				payments.add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, "Übertrag"));				
-			}	
+			}
 			
 			categoryHandler = new CategoryHandler(connection.getCategories());
+			
+			categoryBudgets = Helpers.getCategoryBudgets(categoryHandler, payments);		
 		}
 		catch(Exception e)
 		{
diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml b/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml
index a94b2d9e2c45187b1919e5e712b11287fabe42fe..2af758091a2ad4c11bec23977025936afbb84bcc 100644
--- a/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml
@@ -23,10 +23,18 @@
                </font>
             </Label>
             <ProgressBar fx:id="progressBar" prefHeight="18.0" prefWidth="380.0" progress="0.68" />
-            <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
+            <Label text="Verbrauch nach Kategorien">
+               <font>
+                  <Font name="System Bold" size="16.0" />
+               </font>
                <VBox.margin>
                   <Insets top="25.0" />
                </VBox.margin>
+            </Label>
+            <ListView fx:id="listView" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
+               <VBox.margin>
+                  <Insets />
+               </VBox.margin>
             </ListView>
          </children>
       </VBox>
diff --git a/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java b/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
index 25018a33b0c7066688942a56372c7ec7f41ae6cd..1edd1a69945a863305b8c2fc4af551484de1bcb1 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
+++ b/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
@@ -12,7 +12,6 @@ import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.LatestRepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
@@ -245,55 +244,9 @@ public class DatabaseHandler
 
 		return result;
 	}
-
-	@Deprecated
-	public ArrayList<CategoryBudget> getCategoryBudget(int year, int month)
-	{
-//		String date = String.valueOf(year) + "-" + String.format("%02d", month) + "-";
-//		Statement stmt = null;
-//		String query = "SELECT q.cat_name AS \"Name\", q.cat_col AS \"Color\", SUM(q.amoun) AS \"Amount\" FROM (SELECT Payment.CategoryID as \"cat_ID\", Category.Name as \"cat_name\", Category.Color as \"cat_col\", Payment.Amount AS \"amoun\" FROM Payment, Category WHERE Payment.CategoryID = Category.ID AND (YEAR(Date) = "
-//				+ year + " AND  MONTH(Date) = " + month + " AND RepeatMonthDay = 0 OR RepeatMonthDay != 0 AND CONCAT('" + date + "', RepeatMonthDay) >= Date AND RepeatEndDate IS NULL OR RepeatMonthDay != 0 AND CONCAT('" + date + "', RepeatMonthDay) >= Date AND CONCAT('" + date
-//				+ "', RepeatMonthDay) <= RepeatEndDate OR RepeatInterval != 0 AND DATEDIFF(NOW(), Date ) % RepeatInterval = 0 AND RepeatEndDate IS NULL OR RepeatInterval != 0 AND DATEDIFF(NOW(), Date ) % RepeatInterval = 0 AND RepeatEndDate IS NOT NULL AND DATEDIFF(RepeatEndDate, NOW()) > 0)GROUP BY Payment.ID) as q GROUP BY q.cat_ID ORDER BY SUM(q.amoun) DESC";
-//		ArrayList<CategoryBudget> results = new ArrayList<>();
-//		try
-//		{
-//			stmt = connection.createStatement();
-//			ResultSet rs = stmt.executeQuery(query);
-//
-//			while(rs.next())
-//			{
-//				String name = rs.getString("Name");
-//				String color = rs.getString("Color");
-//				int amount = rs.getInt("Amount");
-//
-//				results.add(new CategoryBudget(name, Color.web(color), amount));
-//			}
-//		}
-//		catch(SQLException e)
-//		{
-//			Logger.error(e);
-//		}
-//		finally
-//		{
-//			if(stmt != null)
-//			{
-//				try
-//				{
-//					stmt.close();
-//				}
-//				catch(SQLException e)
-//				{
-//				}
-//			}
-//		}
-//
-//		return results;
-		return null;
-	}
-
+	
 	public NormalPayment getPayment(int ID)
 	{
-		//TODO query
 		Statement stmt = null;
 		String query = "SELECT * FROM Payment WHERE Payment.ID= " + ID;
 		try
diff --git a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index 83c6b649fb05f0bed22b0f949339143e8f7b9b85..735dcbdd43c5b5197fd48809e1d3b261763413eb 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -27,7 +27,6 @@ import de.deadlocker8.budgetmasterserver.server.category.CategoryDelete;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryGet;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryGetAll;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryUpdate;
-import de.deadlocker8.budgetmasterserver.server.categorybudget.CategoryBudgetGet;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentAdd;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentDelete;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentGet;
@@ -100,9 +99,6 @@ public class SparkServer
 		put("/category", new CategoryUpdate(handler));
 		delete("/category", new CategoryDelete(handler));
 
-		// CategoryBudget
-		get("/categorybudget", new CategoryBudgetGet(handler, gson));
-
 		// Payment
 		// Normal
 		get("/payment", new PaymentGet(handler, gson));
diff --git a/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java b/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java
deleted file mode 100644
index c6e752a9a433b72a380c22f10e16a3eab4cec48d..0000000000000000000000000000000000000000
--- a/src/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package de.deadlocker8.budgetmasterserver.server.categorybudget;
-
-import static spark.Spark.halt;
-
-import java.util.ArrayList;
-
-import com.google.gson.Gson;
-
-import de.deadlocker8.budgetmaster.logic.CategoryBudget;
-import de.deadlocker8.budgetmasterserver.main.DatabaseHandler;
-import spark.Request;
-import spark.Response;
-import spark.Route;
-
-public class CategoryBudgetGet implements Route
-{
-	private DatabaseHandler handler;
-	private Gson gson;
-
-	public CategoryBudgetGet(DatabaseHandler handler, Gson gson)
-	{
-		this.handler = handler;
-		this.gson = gson;
-	}
-
-	@Override
-	public Object handle(Request req, Response res) throws Exception
-	{
-		if(!req.queryParams().contains("year") || !req.queryParams().contains("month"))
-		{
-			halt(400, "Bad Request");
-		}
-		
-		int year = 0;
-		int month = 0;
-		
-		try
-		{				
-			year = Integer.parseInt(req.queryMap("year").value());
-			month = Integer.parseInt(req.queryMap("month").value());
-			
-			if(year < 0 || month < 1 || month > 12)
-			{
-				halt(400, "Bad Request");
-			}
-			
-			try
-			{					
-				ArrayList<CategoryBudget> categories = handler.getCategoryBudget(year, month);			
-
-				return gson.toJson(categories);
-			}
-			catch(IllegalStateException ex)
-			{
-				halt(500, "Internal Server Error");
-			}
-		}
-		catch(Exception e)
-		{
-			halt(400, "Bad Request");
-		}
-		
-		return null;
-	}
-}
\ No newline at end of file