diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index cd92b94b74c73c34496d21d9baa40058d80b19cc..4bea62191b4053c210949b9994bf7620aac3c742 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -5,14 +5,22 @@ SMARTTIME
 =========
 
 >>> start-date: 09.01.15
->>> status-date: 10.07.16
+>>> status-date: 27.05.17
 ____________________________________________________
 
+v.5.1-0 - (30)
+===============
+
+-make resizeable
+-save last used project and task and restore on startup
+-bugfixes
+>>> end-work: 27.05.17
+
 v.5.0.3 - (29)
 ===============
 
 -Fixed issue where user have to press enter button in projectWindow (otherwise dropDown values would have been null)
->>> end-work: 04.02.16
+>>> end-work: 10.07.16
 
 v.5.0.2 - (28)
 ===============
diff --git a/README.md b/README.md
index 30b0874a0dd944b211574071aa4d375bffa4699f..c6798180f51849579185bb17cce739b552de75b5 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # SmartTime
 
 - startdate: 09.01.15
-- current version: 5.0.3 (29) - 10.07.16
+- current version: 5.1.0 (30) - 27.05.17
 
 ### Description
 
diff --git a/build/Icon.ico b/build/Icon.ico
index 0dcdf4925f3d61fcac6b83930a051e66f1533680..f019748afbd971143be45367935e34c188b44b6f 100644
Binary files a/build/Icon.ico and b/build/Icon.ico differ
diff --git a/build/SmartTime.exe b/build/SmartTime.exe
index 0b5936eea06e5abe0f4805936154ddc0cd44302a..2a9e160a3e51f345989dbf368892c27fc7e44f12 100644
Binary files a/build/SmartTime.exe and b/build/SmartTime.exe differ
diff --git a/build/SmartTime.jar b/build/SmartTime.jar
new file mode 100644
index 0000000000000000000000000000000000000000..949d1710d47486171bf10d92cd4aeeef85e3e67e
Binary files /dev/null and b/build/SmartTime.jar differ
diff --git a/build/SmartTime.xml b/build/SmartTime.xml
index 023469c01ba75405d9729896e07a67f6a2e833bf..c89fe260e41ff577123c1d7b2031b89d433fb92c 100644
--- a/build/SmartTime.xml
+++ b/build/SmartTime.xml
@@ -2,8 +2,8 @@
 <launch4jConfig>
   <dontWrapJar>false</dontWrapJar>
   <headerType>gui</headerType>
-  <jar>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime-v.5.0.3.jar</jar>
-  <outfile>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.exe</outfile>
+  <jar>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.jar</jar>
+  <outfile>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\SmartTime.exe</outfile>
   <errTitle></errTitle>
   <cmdLine></cmdLine>
   <chdir>.</chdir>
@@ -13,7 +13,7 @@
   <stayAlive>false</stayAlive>
   <restartOnCrash>false</restartOnCrash>
   <manifest></manifest>
-  <icon>C:\Users\ROGO2\Documents\Programmierung\eclipse\workspace\SmartTime-v5.0\build\Icon.ico</icon>
+  <icon>C:\Programmierung\eclipse\workspace\SmartTime-v5.0\build\Icon.ico</icon>
   <classPath>
     <mainClass>userInterface.Main</mainClass>
     <cp>.</cp>
diff --git a/build/icon.png b/build/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..45639952c2ec3c2b747ab89de90023d2af40bb76
Binary files /dev/null and b/build/icon.png differ
diff --git a/build/icon_old.png b/build/icon_old.png
new file mode 100644
index 0000000000000000000000000000000000000000..adda60842424d26b524d45e0e0b169cddb0855bc
Binary files /dev/null and b/build/icon_old.png differ
diff --git a/src/core/SQL.java b/src/core/SQL.java
index eb0304a0bac16a33238ebce61e095d319e91389f..f42367342f15d502332361b232ff9411281619b4 100644
--- a/src/core/SQL.java
+++ b/src/core/SQL.java
@@ -2,6 +2,7 @@ package core;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.ArrayList;
@@ -9,12 +10,12 @@ import java.util.HashSet;
 
 public class SQL
 {
-	private String path;	
+	private String path;
 
 	public SQL(String path)
 	{
 		this.path = path;
-	}	
+	}
 
 	public void createDB() throws Exception
 	{
@@ -31,7 +32,7 @@ public class SQL
 
 		c.close();
 	}
-	
+
 	public void deleteDB() throws Exception
 	{
 		Connection c = null;
@@ -45,27 +46,33 @@ public class SQL
 		stmt.close();
 
 		c.close();
-	}	
+	}
 
 	public void insert(LogObject log) throws Exception
 	{
-		Connection c = null;
-		Statement stmt = null;
+		Connection c = null;		
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
-
-		stmt = c.createStatement();
-		String sql = "INSERT INTO SMARTTIME VALUES(" + log.getYear() + "," + log.getMonth() + "," + log.getDay() + "," + "'" + log.getStartTime() + "'," + "'" + log.getEndTime() + "',"
-				+ log.getDuration() + "," + "'" + log.getProject() + "'," + "'" + log.getTask() + "')";
-		stmt.executeUpdate(sql);
+		
+		String sql = "INSERT INTO SMARTTIME VALUES(?, ?, ?, ?, ?, ?, ?, ?)";
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setInt(1, log.getYear());
+		stmt.setInt(2, log.getMonth());
+		stmt.setInt(3, log.getDay());
+		stmt.setString(4, log.getStartTime());
+		stmt.setString(5, log.getEndTime());
+		stmt.setLong(6, log.getDuration());
+		stmt.setString(7, log.getProject());
+		stmt.setString(8, log.getTask());
+
+		stmt.executeUpdate();
 		stmt.close();
-
 		c.close();
 	}
-	
+
 	private ArrayList<LogObject> extractLogObjects(ResultSet rs) throws Exception
 	{
-		ArrayList<LogObject> logObjects = new ArrayList<LogObject>();	
+		ArrayList<LogObject> logObjects = new ArrayList<LogObject>();
 		while(rs.next())
 		{
 			int year = rs.getInt("YEAR");
@@ -82,11 +89,11 @@ public class SQL
 		}
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getLogObjects() throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
@@ -94,27 +101,27 @@ public class SQL
 
 		stmt = c.createStatement();
 		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;");
-		
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProject(String projectName) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
 
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
-		c.setAutoCommit(false);
-
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName +"'ORDER BY TASK, YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;");
+		c.setAutoCommit(false);	
+		
+		PreparedStatement stmt = c.prepareStatement("SELECT * FROM SMARTTIME WHERE PROJECT=? ORDER BY TASK, YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;");
+		stmt.setString(1, projectName);
+		ResultSet rs = stmt.executeQuery();
 		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 		
@@ -124,205 +131,206 @@ public class SQL
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProjectAndTask(String projectName, String taskName) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;");
-		
+		PreparedStatement stmt = c.prepareStatement("SELECT * FROM SMARTTIME WHERE PROJECT=? AND TASK=? ORDER BY YEAR DESC, MONTH DESC, DAY DESC, STARTTIME DESC;");
+		stmt.setString(1, projectName);
+		stmt.setString(2, taskName);
+		ResultSet rs = stmt.executeQuery();
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProjectAndTaskAndYear(String projectName, String taskName, int year) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' AND YEAR='"+ year +"'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProjectAndTaskAndYearAndMonth(String projectName, String taskName, int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND TASK='"+ taskName +"' AND YEAR='"+ year +"' AND MONTH='"+ month +"'ORDER BY DAY DESC, STARTTIME DESC;");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProjectAndYear(String projectName, int year) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND YEAR='"+ year +"'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByProjectAndYearAndMonth(String projectName, int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='"+ projectName + "' AND YEAR='"+ year +"' AND MONTH='"+ month +"'ORDER BY DAY DESC, STARTTIME DESC;");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByYear(int year) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='"+ year +"' ORDER BY PROJECT, TASK");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' ORDER BY PROJECT, TASK");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<LogObject> getByYearAndMonth(int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='"+ year + "' AND MONTH='"+ month +"'ORDER BY PROJECT, TASK;");
-		
+		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY PROJECT, TASK;");
+
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
-		
+
 		rs.close();
 		stmt.close();
 		c.close();
 
 		return logObjects;
 	}
-	
+
 	public ArrayList<String> getProjectNames() throws Exception
-	{		
+	{
 		Connection c = null;
-		Statement stmt = null;			
+		Statement stmt = null;
 
 		Class.forName("org.sqlite.JDBC");
-		c = DriverManager.getConnection("jdbc:sqlite:"+path);
+		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
 		stmt = c.createStatement();
 		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME ORDER BY PROJECT;");
-		
-		ArrayList<LogObject> objects= extractLogObjects(rs);
-		
+
+		ArrayList<LogObject> objects = extractLogObjects(rs);
+
 		rs.close();
 		stmt.close();
-		c.close();	
-	
+		c.close();
+
 		HashSet<String> names = new HashSet<String>();
 		for(LogObject current : objects)
 		{
 			names.add(current.getProject());
 		}
-		
+
 		return new ArrayList<String>(names);
 	}
-	
+
 	public ArrayList<String> getTaskNamesByProject(String projectName) throws Exception
-	{		
+	{
 		ArrayList<LogObject> objects = getByProject(projectName);
 		HashSet<String> names = new HashSet<String>();
 		for(LogObject current : objects)
 		{
 			names.add(current.getTask());
 		}
-		
+
 		return new ArrayList<String>(names);
 	}
-	
+
 	public ArrayList<String> getYears() throws Exception
-	{		
+	{
 		ArrayList<LogObject> objects = getLogObjects();
 		HashSet<String> names = new HashSet<String>();
 		for(LogObject current : objects)
 		{
 			names.add(String.valueOf(current.getYear()));
 		}
-		
+
 		return new ArrayList<String>(names);
 	}
-	
+
 	public void update(LogObject oldLog, LogObject newLog) throws Exception
 	{
 		Connection c = null;
@@ -331,21 +339,14 @@ public class SQL
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 
 		stmt = c.createStatement();
-		String sql = "UPDATE SMARTTIME SET PROJECT='" + newLog.getProject() + "' , TASK='" + newLog.getTask() + "' "
-				+ "WHERE YEAR='" + oldLog.getYear() 
-				+ "' AND MONTH='" + oldLog.getMonth() 
-				+ "' AND DAY='" + oldLog.getDay() 
-				+ "' AND STARTTIME='" + oldLog.getStartTime() 
-				+ "' AND ENDTIME='" + oldLog.getEndTime() 
-				+ "' AND DURATION='" + oldLog.getDuration()
-				+ "' AND PROJECT='" + oldLog.getProject()
-				+ "' AND TASK='" + oldLog.getTask() + "';";			
+		String sql = "UPDATE SMARTTIME SET PROJECT='" + newLog.getProject() + "' , TASK='" + newLog.getTask() + "' " + "WHERE YEAR='" + oldLog.getYear() + "' AND MONTH='" + oldLog.getMonth() + "' AND DAY='" + oldLog.getDay() + "' AND STARTTIME='" + oldLog.getStartTime() + "' AND ENDTIME='"
+				+ oldLog.getEndTime() + "' AND DURATION='" + oldLog.getDuration() + "' AND PROJECT='" + oldLog.getProject() + "' AND TASK='" + oldLog.getTask() + "';";
 		stmt.executeUpdate(sql);
 		stmt.close();
 
 		c.close();
 	}
-	
+
 	public void delete(LogObject log) throws Exception
 	{
 		Connection c = null;
@@ -354,15 +355,8 @@ public class SQL
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 
 		stmt = c.createStatement();
-		String sql = "DELETE FROM SMARTTIME "
-				+ "WHERE YEAR='" + log.getYear() 
-				+ "' AND MONTH='" + log.getMonth() 
-				+ "' AND DAY='" + log.getDay() 
-				+ "' AND STARTTIME='" + log.getStartTime() 
-				+ "' AND ENDTIME='" + log.getEndTime() 
-				+ "' AND DURATION='" + log.getDuration()
-				+ "' AND PROJECT='" + log.getProject()
-				+ "' AND TASK='" + log.getTask() + "';";			
+		String sql = "DELETE FROM SMARTTIME " + "WHERE YEAR='" + log.getYear() + "' AND MONTH='" + log.getMonth() + "' AND DAY='" + log.getDay() + "' AND STARTTIME='" + log.getStartTime() + "' AND ENDTIME='" + log.getEndTime() + "' AND DURATION='" + log.getDuration() + "' AND PROJECT='"
+				+ log.getProject() + "' AND TASK='" + log.getTask() + "';";
 		stmt.executeUpdate(sql);
 		stmt.close();
 
diff --git a/src/userInterface/UserInterfaceController.java b/src/userInterface/UserInterfaceController.java
index ae1a027dcc5f416ed80cb67f5bda832d7deb6384..4a13eafe15d05b8b008d03db80b2915134242ddd 100644
--- a/src/userInterface/UserInterfaceController.java
+++ b/src/userInterface/UserInterfaceController.java
@@ -821,6 +821,8 @@ public class UserInterfaceController
 	
 	public void about()
 	{
-		AlertGenerator.showAboutAlert(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", icon, stage, null, false);		
+		ArrayList<String> creditLines = new ArrayList<>();
+		creditLines.add(bundle.getString("credits"));
+		AlertGenerator.showAboutAlertWithCredits(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", creditLines, icon, stage, null, false);		
 	}	
 }
\ No newline at end of file
diff --git a/src/userInterface/_de.properties b/src/userInterface/_de.properties
index f9bf1ec8d8b36e621257eeec65ee4da8b40a0b39..038537ad5224ca84f66af2971887373661b6f1ad 100644
--- a/src/userInterface/_de.properties
+++ b/src/userInterface/_de.properties
@@ -1,6 +1,7 @@
 app.name=SmartTime
-version.code=29
-version.name=5.0.3
-version.date=10.07.16
+version.code=30
+version.name=5.1.0
+version.date=27.05.17
 
-folder=Deadlocker/SmartTime
\ No newline at end of file
+folder=Deadlocker/SmartTime
+credits=Icon made by Vectors Market from www.flaticon.com (licensed by CC 3.0 BY)
\ No newline at end of file
diff --git a/src/userInterface/icon.png b/src/userInterface/icon.png
index adda60842424d26b524d45e0e0b169cddb0855bc..45639952c2ec3c2b747ab89de90023d2af40bb76 100644
Binary files a/src/userInterface/icon.png and b/src/userInterface/icon.png differ