diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java
deleted file mode 100644
index 6517e261397357c889c00f751d45b7e27591a57c..0000000000000000000000000000000000000000
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Set;
-
-import de.deadlocker8.budgetmaster.logic.Helpers;
-import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
-import javafx.event.EventHandler;
-import javafx.geometry.Point2D;
-import javafx.scene.Node;
-import javafx.scene.chart.BarChart;
-import javafx.scene.chart.CategoryAxis;
-import javafx.scene.chart.NumberAxis;
-import javafx.scene.chart.XYChart;
-import javafx.scene.control.Label;
-import javafx.scene.control.Tooltip;
-import javafx.scene.input.MouseEvent;
-
-@Deprecated
-public class BarChartGenerator
-{
-	private ArrayList<MonthInOutSum> monthInOutSums;
-	private String currency;
-
-	public BarChartGenerator(ArrayList<MonthInOutSum> monthInOutSums, String currency)
-	{
-		this.monthInOutSums = monthInOutSums;
-		this.currency = currency;
-	}
-
-	public BarChart<String, Number> generate()
-	{
-		final CategoryAxis xAxis = new CategoryAxis();
-		final NumberAxis yAxis = new NumberAxis();
-		final BarChart<String, Number> generatedChart = new BarChart<>(xAxis, yAxis);
-		generatedChart.setTitle(null);
-
-		xAxis.setLabel("");
-		yAxis.setLabel("Summe in " + currency);
-
-		XYChart.Series<String, Number> seriesIN = new XYChart.Series<String, Number>();
-		seriesIN.setName("Einnahmen");
-		XYChart.Series<String, Number> seriesOUT = new XYChart.Series<String, Number>();
-		seriesOUT.setName("Ausgaben");
-
-		for(MonthInOutSum currentItem : monthInOutSums)
-		{
-			String label = currentItem.getDate().toString("MMMM YY");
-
-			seriesIN.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetIN()/100.0));
-			seriesOUT.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetOUT()/100.0));
-		}
-
-		generatedChart.getData().add(seriesIN);
-		generatedChart.getData().add(seriesOUT);
-
-		generatedChart.setLegendVisible(true);
-		
-		// add tooltip to every segment
-		generatedChart.getData().stream().forEach(tool -> {
-			for(XYChart.Data<String, Number> data : tool.getData())
-			{
-				Tooltip tooltip = new Tooltip();
-
-				tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency));
-				Tooltip.install(tool.getNode(), tooltip);
-				Node node = data.getNode();
-				node.setOnMouseEntered(new EventHandler<MouseEvent>()
-				{
-					@Override
-					public void handle(MouseEvent event)
-					{
-						Point2D p = node.localToScreen(event.getX() + 5, event.getY() + 7);
-						tooltip.show(node, p.getX(), p.getY());
-					}
-				});
-				node.setOnMouseExited(new EventHandler<MouseEvent>()
-				{
-
-					@Override
-					public void handle(MouseEvent event)
-					{
-						tooltip.hide();
-					}
-				});
-			}
-		});
-		
-		// style bar for incomes
-		for(Node n : generatedChart.lookupAll(".default-color0.chart-bar"))
-		{
-			n.setStyle("-fx-bar-fill: " + Helpers.COLOR_INCOME + ";");
-		}		
-		
-		// style bar for payments
-		for(Node n : generatedChart.lookupAll(".default-color1.chart-bar"))
-		{
-			n.setStyle("-fx-bar-fill: " + Helpers.COLOR_PAYMENT + ";");
-		}
-		
-		 //style legend item according to color
-		Set<Node> nodes = generatedChart.lookupAll(".chart-legend-item");
-		if(nodes.size() > 0)
-		{        	
-			Iterator<Node> iterator = nodes.iterator();
-			int counter = 0;
-			while(iterator.hasNext())
-			{
-    			Node node = iterator.next();	        			
-    			if(node instanceof Label)
-    			{
-    				Label labelLegendItem = (Label)node;     
-    				if(counter == 0)
-    				{
-    					labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ";");
-    				}
-    				else
-    				{
-    					labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ";");
-    				}
-    			}
-    			counter++;
-			}
-		}
-
-		return generatedChart;
-	}
-}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LegendType.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LegendType.java
deleted file mode 100644
index f597aff27816b5b1c70229e469703f73825b00fd..0000000000000000000000000000000000000000
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LegendType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
-
-public enum LegendType
-{
-	NONE, NORMAL, FULL;
-}
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java
deleted file mode 100644
index d2b527b77b141739d52773c39cf239369682fa6c..0000000000000000000000000000000000000000
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Set;
-
-import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
-import de.deadlocker8.budgetmaster.logic.Helpers;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
-import javafx.event.EventHandler;
-import javafx.geometry.Point2D;
-import javafx.scene.Node;
-import javafx.scene.chart.PieChart;
-import javafx.scene.control.Label;
-import javafx.scene.control.Tooltip;
-import javafx.scene.input.MouseEvent;
-import tools.ConvertTo;
-
-@Deprecated
-public class PieChartGenerator
-{
-    private String title;
-    private ArrayList<CategoryInOutSum> categoryInOutSums;
-    private boolean useBudgetIN;
-    private String currency;
-
-    public PieChartGenerator(String title, ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN, String currency)
-    {
-        this.title = title;
-        this.categoryInOutSums = categoryInOutSums;
-        this.useBudgetIN = useBudgetIN;
-        this.currency = currency;
-    }
-  
-    public PieChart generate()
-    {
-        ArrayList<PieChart.Data> data = new ArrayList<>();
-        
-        for(CategoryInOutSum currentItem : categoryInOutSums)
-        {        	
-        	String label = currentItem.getName(); 
-        	if(label.equals("NONE"))
-        	{
-        		label = "Keine Kategorie";
-        	}
-        	
-        	if(useBudgetIN)
-        	{
-        		data.add(new PieChart.Data(label, currentItem.getBudgetIN()/100.0));
-        	}
-        	else
-        	{
-        		data.add(new PieChart.Data(label, -currentItem.getBudgetOUT()/100.0));
-        	}
-        }
-        
-        ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(data);
-
-        final PieChart chart = new PieChart(pieChartData);
-        chart.setTitle(title);
-
-        //add tooltip to every segment that shows percentage as double value
-        chart.getData().stream().forEach(tool ->
-        {
-            Tooltip tooltip = new Tooltip();
-
-            double total = 0;
-            for(int i = 0; i < chart.getData().size(); i++)
-            {
-            	PieChart.Data currentData = chart.getData().get(i);
-                total += currentData.getPieValue();
-                String currentColor = ConvertTo.toRGBHexWithoutOpacity(categoryInOutSums.get(i).getColor());
-                currentData.getNode().setStyle("-fx-pie-color: " + currentColor + ";");
-            }    
-            
-            //style legend item according to color
-    		Set<Node> nodes = chart.lookupAll(".chart-legend-item");
-    		if(nodes.size() > 0)
-    		{        	
-    			Iterator<Node> iterator = nodes.iterator();
-    			int counter = 0;
-    			while(iterator.hasNext())
-    			{
-        			Node node = iterator.next();	        			
-        			if(node instanceof Label)
-        			{
-        				Label labelLegendItem = (Label)node;        				
-        				labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(categoryInOutSums.get(counter).getColor()) + ";");
-        			}
-        			counter++;
-    			}
-    		}
-
-            double pieValue = tool.getPieValue();
-            double percentage = (pieValue / total) * 100;
-            String percent = String.valueOf(percentage);
-            percent = percent.substring(0, percent.indexOf(".") + 2);
-
-            tooltip.setText(percent + " %\n" + Helpers.getCurrencyString(pieValue, currency));
-            Tooltip.install(tool.getNode(), tooltip);
-            Node node = tool.getNode();
-            node.setOnMouseEntered(new EventHandler<MouseEvent>()
-            {
-                @Override
-                public void handle(MouseEvent event)
-                {
-                    Point2D p = node.localToScreen(event.getX() + 5, event.getY() + 7);
-                    tooltip.show(node, p.getX(), p.getY());
-                }
-            });
-            node.setOnMouseExited(new EventHandler<MouseEvent>()
-            {
-
-                @Override
-                public void handle(MouseEvent event)
-                {
-                    tooltip.hide();
-                }
-            });
-        });
-
-        return chart;
-    }
-}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChart.java
rename to src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
index d94618d06df57b68d132edbd757aa42cdec9adeb..17603ae33c3c5b660716db9f0f4733f586948ec4 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
@@ -1,9 +1,9 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
+package de.deadlocker8.budgetmaster.logic.charts;
 
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
-import de.deadlocker8.budgetmaster.logic.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.Scene;
@@ -295,7 +295,9 @@ public class CategoriesChart extends VBox implements ChartExportable
 	public WritableImage export(int width, int height)
 	{
 		VBox root = new VBox();
+		root.setStyle("-fx-background-color: transparent;");
 		root.setPadding(new Insets(25));
+		
 		root.getChildren().add(generate(titleIncomes, true));
 		root.getChildren().add(generate(titlePayments, false));
 		
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/ChartExportable.java b/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
similarity index 57%
rename from src/de/deadlocker8/budgetmaster/logic/chartGenerators/ChartExportable.java
rename to src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
index 2189d23a2b6a238ff8f9fa280c27a1a7d2777675..2077c7b06169b46798a02f4ac5c61af58a8f8a4d 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/ChartExportable.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
@@ -1,8 +1,12 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
+package de.deadlocker8.budgetmaster.logic.charts;
 
 import javafx.scene.image.WritableImage;
 
 public interface ChartExportable
 {
 	WritableImage export(int width, int height);
+	
+	double getWidth();
+	
+	double getHeight();
 }
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/LegendType.java b/src/de/deadlocker8/budgetmaster/logic/charts/LegendType.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9f8e6a41912883961dcfc25fc07a0739b236ff1
--- /dev/null
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/LegendType.java
@@ -0,0 +1,6 @@
+package de.deadlocker8.budgetmaster.logic.charts;
+
+public enum LegendType
+{
+	NONE, NORMAL, FULL;
+}
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
similarity index 71%
rename from src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
rename to src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
index dd2a0cdef61cb1534aac433d02ffcb4a3623718a..cdc88fc932678cf8cd3d57fdc2450edb83c2c2ab 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
@@ -1,30 +1,39 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
+package de.deadlocker8.budgetmaster.logic.charts;
 
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import javafx.geometry.Insets;
 import javafx.geometry.Orientation;
 import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.SnapshotParameters;
 import javafx.scene.control.Label;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.control.ScrollPane.ScrollBarPolicy;
 import javafx.scene.control.Separator;
 import javafx.scene.control.Tooltip;
+import javafx.scene.image.WritableImage;
 import javafx.scene.layout.GridPane;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.Priority;
+import javafx.scene.layout.Region;
 import javafx.scene.layout.VBox;
 import javafx.scene.paint.Color;
 import javafx.scene.text.TextAlignment;
+import javafx.scene.transform.Transform;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
 import tools.ConvertTo;
 
-public class MonthChartGenerator
+public class MonthBarChart extends VBox implements ChartExportable
 {
 	private ArrayList<MonthInOutSum> monthInOutSums;
 	private String currency;
 
-	public MonthChartGenerator(ArrayList<MonthInOutSum> monthInOutSums, String currency)
+	public MonthBarChart(ArrayList<MonthInOutSum> monthInOutSums, String currency)
 	{
 		if(monthInOutSums == null)
 		{
@@ -34,10 +43,24 @@ public class MonthChartGenerator
 		{
 			this.monthInOutSums = monthInOutSums;
 		}
-		this.currency = currency;
+		this.currency = currency;	
+		
+		ScrollPane scrollPane = new ScrollPane();
+        scrollPane.setVbarPolicy(ScrollBarPolicy.NEVER);
+        scrollPane.setFocusTraversable(false);
+        scrollPane.setStyle("-fx-background-color: transparent; -fx-background-insets: 0; -fx-border-color: transparent; -fx-border-width: 0; -fx-border-insets: 0;");
+        scrollPane.setPadding(new Insets(0, 0, 10, 0));
+       
+        HBox generatedChart = generate();
+        scrollPane.setContent(generatedChart);
+        generatedChart.prefHeightProperty().bind(scrollPane.heightProperty().subtract(30));
+        this.getChildren().add(scrollPane);
+        VBox.setVgrow(scrollPane, Priority.ALWAYS);
+        
+        this.getChildren().add(generateLegend());
 	}
 
-	public HBox generate()
+	private HBox generate()
 	{
 		HBox generatedChart = new HBox();
 		generatedChart.setAlignment(Pos.TOP_CENTER);
@@ -127,7 +150,7 @@ public class MonthChartGenerator
 		return result;
 	}
 
-	public GridPane generateLegend()
+	private GridPane generateLegend()
 	{
 		GridPane legend = new GridPane();
 		legend.setPadding(new Insets(10));
@@ -225,4 +248,34 @@ public class MonthChartGenerator
 		}
 		return maximum / 100.0;
 	}
+
+    @Override
+    public WritableImage export(int width, int height) 
+    {
+        VBox root = new VBox();
+        root.setStyle("-fx-background-color: transparent;");
+        root.setPadding(new Insets(25));
+        
+        HBox generatedChart = generate();
+        root.getChildren().add(generatedChart);        
+        VBox.setVgrow(generatedChart, Priority.ALWAYS);
+        
+        Region spacer = new Region();
+        spacer.setMinHeight(30);
+		root.getChildren().add(spacer);
+        
+        root.getChildren().add(generateLegend());       
+        
+        Stage newStage = new Stage();
+        newStage.initModality(Modality.NONE);
+        newStage.setScene(new Scene(root, width, height));
+        newStage.setResizable(false);       
+        newStage.show();
+        
+        SnapshotParameters sp = new SnapshotParameters();
+        sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight()));
+        newStage.close();
+        
+        return root.snapshot(sp, null);
+    }
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
similarity index 73%
rename from src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java
rename to src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
index 8b6bbb70461c24dcb1f8b23a05dac9becc2085fb..96419f9b96378c9a244235766b0077d8114b5644 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
@@ -1,34 +1,45 @@
-package de.deadlocker8.budgetmaster.logic.chartGenerators;
+package de.deadlocker8.budgetmaster.logic.charts;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Set;
 
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import javafx.event.EventHandler;
+import javafx.geometry.Insets;
 import javafx.geometry.Point2D;
 import javafx.scene.Node;
+import javafx.scene.Scene;
+import javafx.scene.SnapshotParameters;
 import javafx.scene.chart.CategoryAxis;
 import javafx.scene.chart.LineChart;
 import javafx.scene.chart.NumberAxis;
 import javafx.scene.chart.XYChart;
 import javafx.scene.control.Label;
 import javafx.scene.control.Tooltip;
+import javafx.scene.image.WritableImage;
 import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.VBox;
+import javafx.scene.transform.Transform;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
 
-public class LineChartGenerator
+public class MonthLineChart extends VBox implements ChartExportable
 {
 	private ArrayList<MonthInOutSum> monthInOutSums;
 	private String currency;
 
-	public LineChartGenerator(ArrayList<MonthInOutSum> monthInOutSums, String currency)
+	public MonthLineChart(ArrayList<MonthInOutSum> monthInOutSums, String currency)
 	{
 		this.monthInOutSums = monthInOutSums;
 		this.currency = currency;
+		
+		this.setSpacing(10);
+		this.getChildren().add(generate());
 	}
 
-	public LineChart<String, Number> generate()
+	private LineChart<String, Number> generate()
 	{
 		final CategoryAxis xAxis = new CategoryAxis();
 		final NumberAxis yAxis = new NumberAxis();
@@ -136,4 +147,25 @@ public class LineChartGenerator
 
 		return generatedChart;
 	}
+
+    @Override
+    public WritableImage export(int width, int height) {
+        VBox root = new VBox();
+        root.setStyle("-fx-background-color: transparent;");
+        root.setPadding(new Insets(25));
+        
+        root.getChildren().add(generate());         
+        
+        Stage newStage = new Stage();
+        newStage.initModality(Modality.NONE);
+        newStage.setScene(new Scene(root, width, height));
+        newStage.setResizable(false);       
+        newStage.show();       
+        
+        SnapshotParameters sp = new SnapshotParameters();
+        sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight()));
+        newStage.close();
+        
+        return root.snapshot(sp, null);
+    }
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
index ef8d3f96e64d0750afb47c13a1965ca6b126d032..9ad46eb9572e7f72a2c5b635cf47819cc0e9a928 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
@@ -24,7 +24,7 @@ import com.itextpdf.text.pdf.PdfPTable;
 import com.itextpdf.text.pdf.PdfWriter;
 
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
-import de.deadlocker8.budgetmaster.logic.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 
 public class ReportGenerator
 {
diff --git a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
similarity index 95%
rename from src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java
rename to src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
index 9118ffd2195736842f4526d8100222e930c762a2..171a7b68a4c2f1bd054950581c29802589249054 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ExceptionHandler.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.logic;
+package de.deadlocker8.budgetmaster.logic.serverconnection;
 
 import java.net.UnknownHostException;
 
diff --git a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
similarity index 96%
rename from src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
rename to src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
index 90b430b267293752d4e351a597bfe217db6d3f36..a7edd958d9496f077f0854b01f9f9b5072fdf4c2 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.logic;
+package de.deadlocker8.budgetmaster.logic.serverconnection;
 
 import java.io.BufferedReader;
 import java.io.InputStream;
@@ -19,6 +19,15 @@ import org.joda.time.DateTime;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 
+import de.deadlocker8.budgetmaster.logic.Category;
+import de.deadlocker8.budgetmaster.logic.CategoryBudget;
+import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
+import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
+import de.deadlocker8.budgetmaster.logic.NormalPayment;
+import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
+import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
+import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmasterserver.logic.Database;
 import tools.ConvertTo;
 import tools.Read;
diff --git a/src/de/deadlocker8/budgetmaster/logic/ServerConnectionException.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java
similarity index 91%
rename from src/de/deadlocker8/budgetmaster/logic/ServerConnectionException.java
rename to src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java
index c18a1663b3a6774129233997db6a08d99535f9e4..4415d8625928515f62717b77cfa8ed93228a029a 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ServerConnectionException.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnectionException.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.logic;
+package de.deadlocker8.budgetmaster.logic.serverconnection;
 
 public class ServerConnectionException extends Exception
 {
diff --git a/src/de/deadlocker8/budgetmaster/logic/Utils.java b/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
similarity index 93%
rename from src/de/deadlocker8/budgetmaster/logic/Utils.java
rename to src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
index c9af40da56e4e6360256674d42ee8d139343969e..2e6766f7dcbab1a416fd8db16f770706feaeb38e 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Utils.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/FileHelper.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.logic;
+package de.deadlocker8.budgetmaster.logic.utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,10 +12,11 @@ import java.util.ResourceBundle;
 
 import com.google.gson.Gson;
 
+import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmasterserver.logic.Database;
 import tools.PathUtils;
 
-public class Utils
+public class FileHelper
 {
 	private static final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmaster/main/", Locale.GERMANY);
 	
diff --git a/src/de/deadlocker8/budgetmaster/logic/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/logic/Helpers.java
rename to src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
index 70c73e800a0427286edef8c3a3ec0f2cd228e647..79afb7987cfa9cf4398a5dba7bddf1692d07cacc 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Helpers.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.logic;
+package de.deadlocker8.budgetmaster.logic.utils;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
diff --git a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
index 8a86686a8d5455a544882ddc0253e741c337d537..1c5e03bcbcbbca4b799feaf217b9f721ae615312 100644
--- a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
@@ -5,8 +5,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryCell;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/ChartController.java
index 6b96c34d58d7369a4a5553bec7bee241a288dd34..0d8ab2d6985cde19ea8368165b0000216ef6211b 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ChartController.java
@@ -9,25 +9,23 @@ import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 
 import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.MonthInOutSum;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
-import de.deadlocker8.budgetmaster.logic.chartGenerators.CategoriesChart;
-import de.deadlocker8.budgetmaster.logic.chartGenerators.ChartExportable;
-import de.deadlocker8.budgetmaster.logic.chartGenerators.LegendType;
-import de.deadlocker8.budgetmaster.logic.chartGenerators.LineChartGenerator;
-import de.deadlocker8.budgetmaster.logic.chartGenerators.MonthChartGenerator;
+import de.deadlocker8.budgetmaster.logic.charts.CategoriesChart;
+import de.deadlocker8.budgetmaster.logic.charts.ChartExportable;
+import de.deadlocker8.budgetmaster.logic.charts.LegendType;
+import de.deadlocker8.budgetmaster.logic.charts.MonthBarChart;
+import de.deadlocker8.budgetmaster.logic.charts.MonthLineChart;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.collections.FXCollections;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
-import javafx.geometry.Insets;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
-import javafx.scene.chart.LineChart;
 import javafx.scene.control.Accordion;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
@@ -35,11 +33,8 @@ import javafx.scene.control.ComboBox;
 import javafx.scene.control.DateCell;
 import javafx.scene.control.DatePicker;
 import javafx.scene.control.RadioButton;
-import javafx.scene.control.ScrollPane;
-import javafx.scene.control.ScrollPane.ScrollBarPolicy;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.layout.AnchorPane;
-import javafx.scene.layout.HBox;
 import javafx.scene.layout.Priority;
 import javafx.scene.layout.VBox;
 import javafx.scene.paint.Color;
@@ -65,15 +60,16 @@ public class ChartController implements Refreshable
 	@FXML private ComboBox<String> comboBoxEndMonth;
 	@FXML private ComboBox<String> comboBoxEndYear;
 	@FXML private Button buttonChartMonthShow;
+	@FXML private Button buttonChartMonthExport;
 	@FXML private RadioButton radioButtonBars;
 	@FXML private RadioButton radioButtonLines;
-	@FXML private HBox hboxChartMonthButtons;
 
 	private Controller controller;
-	private Button buttonChartMonthExport;
 	private File lastExportPath;
 	
 	private CategoriesChart categoriesChart;
+	private MonthLineChart monthLineChart;
+	private MonthBarChart monthBarChart;
 
 	public void init(Controller controller)
 	{
@@ -101,18 +97,12 @@ public class ChartController implements Refreshable
 		buttonChartMonthShow.setStyle("-fx-background-color: #2E79B9;");
 		buttonChartMonthShow.setGraphic(iconShow3);
 
-		buttonChartMonthExport = new Button();
-		//DEBUG
-//		buttonChartMonthExport.setOnAction((event) -> {
-//			export(vboxChartMonth);
-//		});
-
 		FontIcon iconShow4 = new FontIcon(FontIconType.SAVE);
 		iconShow4.setSize(16);
 		iconShow4.setColor(Color.WHITE);
 		buttonChartMonthExport.setStyle("-fx-background-color: #2E79B9;");
-		buttonChartMonthExport.setGraphic(iconShow4);
-
+		buttonChartMonthExport.setGraphic(iconShow4);		
+	
 		datePickerEnd.setDayCellFactory(new Callback<DatePicker, DateCell>()
 		{
 			@Override
@@ -189,6 +179,24 @@ public class ChartController implements Refreshable
 			export(categoriesChart);
 		}
 	}
+	
+	public void chartMonthExport()
+	{
+	    if(radioButtonLines.isSelected())
+        {
+            if(monthLineChart != null)
+            {
+                export(monthLineChart);
+            }
+        }
+        else
+        {
+            if(monthBarChart != null)
+            {
+                export(monthBarChart);
+            }
+        }
+	}
 
 	public void export(ChartExportable chart)
 	{
@@ -219,21 +227,6 @@ public class ChartController implements Refreshable
 
 	public void chartMonthShow()
 	{
-		if(radioButtonLines.isSelected())
-		{
-			if(!hboxChartMonthButtons.getChildren().contains(buttonChartMonthExport))
-			{
-				hboxChartMonthButtons.getChildren().add(buttonChartMonthExport);
-			}
-		}
-		else
-		{
-			if(hboxChartMonthButtons.getChildren().contains(buttonChartMonthExport))
-			{
-				hboxChartMonthButtons.getChildren().remove(buttonChartMonthExport);
-			}
-		}
-
 		Platform.runLater(() -> {
 			vboxChartMonth.getChildren().clear();
 		});
@@ -267,26 +260,15 @@ public class ChartController implements Refreshable
 
 				if(radioButtonBars.isSelected())
 				{
-					ScrollPane scrollPane = new ScrollPane();
-					scrollPane.setVbarPolicy(ScrollBarPolicy.NEVER);
-					scrollPane.setFocusTraversable(false);
-					scrollPane.setStyle("-fx-background-color: transparent; -fx-background-insets: 0; -fx-border-color: transparent; -fx-border-width: 0; -fx-border-insets: 0;");
-					scrollPane.setPadding(new Insets(0, 0, 10, 0));
-
-					MonthChartGenerator generator = new MonthChartGenerator(sums, controller.getSettings().getCurrency());
-					HBox generatedChart = generator.generate();
-					scrollPane.setContent(generatedChart);
-					generatedChart.prefHeightProperty().bind(scrollPane.heightProperty().subtract(30));
-					vboxChartMonth.getChildren().add(scrollPane);
-					VBox.setVgrow(scrollPane, Priority.ALWAYS);
-					vboxChartMonth.getChildren().add(generator.generateLegend());
+				    monthBarChart = new MonthBarChart(sums, controller.getSettings().getCurrency());
+				    vboxChartMonth.getChildren().add(monthBarChart);
+				    VBox.setVgrow(monthBarChart, Priority.ALWAYS);
 				}
 				else
 				{
-					LineChartGenerator generator = new LineChartGenerator(sums, controller.getSettings().getCurrency());
-					LineChart<String, Number> chartMonth = generator.generate();
-					vboxChartMonth.getChildren().add(chartMonth);
-					VBox.setVgrow(chartMonth, Priority.ALWAYS);
+					monthLineChart = new MonthLineChart(sums, controller.getSettings().getCurrency());					
+					vboxChartMonth.getChildren().add(monthLineChart);
+					VBox.setVgrow(monthLineChart, Priority.ALWAYS);
 				}
 			});
 		}
diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml b/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml
index fbe8fad75a86df369f04c247ba95447fe4d39ab1..58380127ae9c51be53859d42d1ffbed7f25a8e1a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml
@@ -113,7 +113,7 @@
                                     </HBox>
                                  </children>
                               </VBox>
-                              <HBox fx:id="hboxChartMonthButtons" alignment="CENTER_LEFT" spacing="15.0" HBox.hgrow="ALWAYS">
+                              <HBox alignment="CENTER_LEFT" spacing="15.0" HBox.hgrow="ALWAYS">
                                  <children>
                                     <RadioButton fx:id="radioButtonBars" mnemonicParsing="false" text="Balken">
                                        <font>
@@ -131,6 +131,14 @@
                                           <Insets left="10.0" />
                                        </HBox.margin>
                                     </Button>
+                                    <Button fx:id="buttonChartMonthExport" mnemonicParsing="false" onAction="#chartMonthExport">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <HBox.margin>
+                                          <Insets left="10.0" />
+                                       </HBox.margin>
+                                    </Button>
                                  </children>
                               </HBox>
                            </children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java
index c4d84fcb470e904f074e299af26d19f3dddd051b..2fa2e5b0ff43445d08b1907ea9414b50dc178c47 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java
@@ -8,13 +8,13 @@ import org.joda.time.DateTime;
 
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.CategoryHandler;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.FilterSettings;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.PaymentHandler;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.animation.FadeTransition;
diff --git a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java b/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
index f054c82bad66451847c11f9d1f6b0b328d0ec752..793f54a9031bd50e726da9226a99e78904458573 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
@@ -7,7 +7,7 @@ import java.util.Optional;
 
 import javax.imageio.ImageIO;
 
-import de.deadlocker8.budgetmaster.logic.chartGenerators.ChartExportable;
+import de.deadlocker8.budgetmaster.logic.charts.ChartExportable;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.embed.swing.SwingFXUtils;
@@ -54,8 +54,8 @@ public class ExportChartController
 			labelSavePath.setText(savePath.getAbsolutePath());
 		}
 				
-		textFieldWidth.setText("600");
-		textFieldHeight.setText("400");
+		textFieldWidth.setText(String.valueOf((int)chart.getWidth()));
+		textFieldHeight.setText(String.valueOf((int)chart.getHeight()));
 
 		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
 		
diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeController.java b/src/de/deadlocker8/budgetmaster/ui/HomeController.java
index 1cf7c0c4d6f4a93eee3ae601aa462b616955a67a..feb5c989952314609ee527f5549d236efd45f6a7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/HomeController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/HomeController.java
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Budget;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
-import de.deadlocker8.budgetmaster.logic.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryBudgetCell;
 import javafx.application.Platform;
 import javafx.beans.value.ChangeListener;
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java b/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java
index 89872beb9d39ffed5ec2f816d5aa934e2dc75192..54070e374c2ababc76b88595c9acf8495950d7df 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java
@@ -6,8 +6,8 @@ import org.controlsfx.control.PopOver;
 import org.controlsfx.control.PopOver.ArrowLocation;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
index 2fc8cdaaf9dad917bda1224fb8ac2e97c81156a6..2ba2285b179909a908ab05b2024b1bdfc5b9e10b 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
@@ -6,13 +6,13 @@ import java.util.ArrayList;
 import org.joda.time.DateTime;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.cells.ButtonCategoryCell;
 import de.deadlocker8.budgetmaster.ui.cells.RepeatingDayCell;
 import de.deadlocker8.budgetmaster.ui.cells.SmallCategoryCell;
diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
index a1dc8834cb45e38fef892c6e8e22e7036105ae9c..272e133d70f97fc8e8f7f12d8450161be4be92e4 100644
--- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
@@ -4,14 +4,14 @@ import java.io.IOException;
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Budget;
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.FilterSettings;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.cells.PaymentCell;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/ReportController.java
index 36a71134ec20cf969dff064fe984f5f64b8f9ba6..a0fe17c0911799612bb511bd79ba36a54e571ef4 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ReportController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ReportController.java
@@ -10,7 +10,6 @@ import java.util.Date;
 import java.util.Optional;
 
 import de.deadlocker8.budgetmaster.logic.FilterSettings;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.comparators.DateComparator;
@@ -20,6 +19,7 @@ import de.deadlocker8.budgetmaster.logic.report.ColumnOrder;
 import de.deadlocker8.budgetmaster.logic.report.ColumnType;
 import de.deadlocker8.budgetmaster.logic.report.ReportGenerator;
 import de.deadlocker8.budgetmaster.logic.report.ReportItem;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
diff --git a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
index 265c3abf5ad5156ddb148645f61d243c93847d53..159c37cc184be56be33bd56eadee8edef2d98946 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
@@ -5,11 +5,11 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Optional;
 
-import de.deadlocker8.budgetmaster.logic.ExceptionHandler;
-import de.deadlocker8.budgetmaster.logic.Helpers;
-import de.deadlocker8.budgetmaster.logic.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.Settings;
-import de.deadlocker8.budgetmaster.logic.Utils;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmasterserver.logic.Database;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
@@ -206,7 +206,7 @@ public class SettingsController
 
 		try
 		{
-			Utils.saveSettings(controller.getSettings());
+			FileHelper.saveSettings(controller.getSettings());
 		}
 		catch(IOException e)
 		{
@@ -237,7 +237,7 @@ public class SettingsController
 				{
 					ServerConnection connection = new ServerConnection(controller.getSettings());
 					String databaseJSON = connection.exportDatabase();
-					Utils.saveDatabaseJSON(file, databaseJSON);
+					FileHelper.saveDatabaseJSON(file, databaseJSON);
 
 					Platform.runLater(() -> {
 						if(modalStage != null)
@@ -274,7 +274,7 @@ public class SettingsController
 			Database database;
 			try
 			{
-				database = Utils.loadDatabaseJSON(file);
+				database = FileHelper.loadDatabaseJSON(file);
 				if(database.getCategories() == null || database.getNormalPayments() == null || database.getRepeatingPayments() == null)
 				{
 					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Die angegebene Datei enthält kein gültiges BudgetMaster-Datenformat und kann daher nicht importiert werden.", controller.getIcon(), controller.getStage(), null, false);
diff --git a/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java
index 4faa8ceb41af1ad6164c0e9d4b9ac6e434399ce7..b40112b622bda27cd9d1f4036195fea38b488d21 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java
@@ -3,9 +3,9 @@ package de.deadlocker8.budgetmaster.ui;
 import java.io.IOException;
 import java.util.ResourceBundle;
 
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.Settings;
-import de.deadlocker8.budgetmaster.logic.Utils;
+import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
@@ -63,7 +63,7 @@ public class SplashScreenController
 			}
 		});
 		
-		settings = Utils.loadSettings();
+		settings = FileHelper.loadSettings();
 		if(settings == null)
 		{	
 			settings = new Settings();
@@ -105,7 +105,7 @@ public class SplashScreenController
 			settings.setClientSecret(HashUtils.hash(password, Helpers.SALT));
 			try
 			{
-				Utils.saveSettings(settings);
+				FileHelper.saveSettings(settings);
 				
 				stage.close();
 				openBudgetMaster();	
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
index 74b06681cef7c45b731bcd35cea41ac51accd526..b06fef967751ff51a86e62cbcab0d26ba33d1422 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.ui.cells;
 
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
-import de.deadlocker8.budgetmaster.logic.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.HomeController;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
index ce20c31a7b82d563bd0d4d27887f20c0f21831a0..13edac0e323762f96230daf3df9db7db3d2a716a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
@@ -7,10 +7,10 @@ import java.util.Date;
 import java.util.Optional;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.logic.Helpers;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.PaymentController;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
diff --git a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index b2389dd932e79e399f09272e5140ae9d2b87e3e3..29317035bd5b5e5d585dcb568baf2713ccbc2307 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -17,7 +17,7 @@ import org.joda.time.DateTime;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
-import de.deadlocker8.budgetmaster.logic.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.logic.Settings;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryAdd;
diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
index 21eb640fe951be51244ec4a57e0b1812418c1bc7..f319ff5d5c64f56be491167e641b1ae501231205 100644
--- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
+++ b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java
@@ -18,6 +18,7 @@ import com.google.gson.Gson;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPayment;
+import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmasterserver.logic.Database;
 import de.deadlocker8.budgetmasterserver.logic.DatabaseExporter;
 import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler;
@@ -55,7 +56,7 @@ public class DatabaseImportExportTest
 		try
 		{
 			File file = Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json").toFile();
-			Database database = de.deadlocker8.budgetmaster.logic.Utils.loadDatabaseJSON(file);			
+			Database database = FileHelper.loadDatabaseJSON(file);			
 			
 			DatabaseImporter importer = new DatabaseImporter(databaseHandler);
 			importer.importDatabase(database);
@@ -105,7 +106,7 @@ public class DatabaseImportExportTest
 			databaseHandler = new DatabaseHandler(settings);
 			
 			File file = Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json").toFile();
-			Database database = de.deadlocker8.budgetmaster.logic.Utils.loadDatabaseJSON(file);			
+			Database database = FileHelper.loadDatabaseJSON(file);			
 			
 			DatabaseImporter importer = new DatabaseImporter(databaseHandler);
 			importer.importDatabase(database);			
@@ -114,7 +115,7 @@ public class DatabaseImportExportTest
 			DatabaseExporter exporter = new DatabaseExporter(settings);	
 			Gson gson = new Gson();
 			String databaseJSON = gson.toJson(exporter.exportDatabase());
-			de.deadlocker8.budgetmaster.logic.Utils.saveDatabaseJSON(file, databaseJSON);		
+			FileHelper.saveDatabaseJSON(file, databaseJSON);		
 			
 			String expectedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json")));
 			String exportedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json")));