diff --git a/KvizClient/app/src/main/java/onlab/kvizclient/GameActivity.java b/KvizClient/app/src/main/java/onlab/kvizclient/GameActivity.java
index 82737603ec0f0ccd1393e4cca6eb7b42e9f51e36..825623cffd32479190d594c4667ee5d236042ee1 100644
--- a/KvizClient/app/src/main/java/onlab/kvizclient/GameActivity.java
+++ b/KvizClient/app/src/main/java/onlab/kvizclient/GameActivity.java
@@ -1,5 +1,6 @@
 package onlab.kvizclient;
 
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
@@ -45,7 +46,7 @@ public class GameActivity extends AppCompatActivity implements MultipleChoiceFra
             input = new BufferedReader(new InputStreamReader(ServerHolder.getSocket().getInputStream()));
             output = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(ServerHolder.getSocket().getOutputStream())),true);
-            output.println("$$$$");
+            new SendMessageToServerTask().execute("$$$$");
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -127,8 +128,15 @@ public class GameActivity extends AppCompatActivity implements MultipleChoiceFra
         } else {
             displayTextView.setText("nem válaszolt");
         }
-        output.println(Integer.toString(answer) + "##" + Double.toString(answerTime));
+        new SendMessageToServerTask().execute(Integer.toString(answer) + "##" + Double.toString(answerTime));
     }
 
+    private class SendMessageToServerTask extends AsyncTask<String, Void, Void> {
+        protected Void doInBackground(String... params) {
+            String message = params[0];
+            output.println(message);
+            return null;
+        }
+    }
 
 }
diff --git a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
index 4cefae23f7a244c6a3f5baa6212d20631d4105f2..e029dc7a21d472c9afaeca076240a17c5a50c18b 100644
--- a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
+++ b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.content.pm.ServiceInfo;
 import android.net.nsd.NsdManager;
 import android.net.nsd.NsdServiceInfo;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v7.app.AppCompatActivity;
@@ -54,6 +55,8 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
     private RecyclerView recyclerView;
     private ServerListAdapter adapter = null;
 
+    private PrintWriter out = null;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -238,9 +241,11 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
                 ServerModel sm = servers.get(serverNumber);
                 Socket socket = sm.getSocket();
                 ServerHolder.setServerModel(sm);
-                PrintWriter out = new PrintWriter(new BufferedWriter(
-                        new OutputStreamWriter(sm.getSocket().getOutputStream())), true);
-                out.println(str);
+                if (out == null) {
+                    out = new PrintWriter(new BufferedWriter(
+                            new OutputStreamWriter(sm.getSocket().getOutputStream())), true);
+                }
+                new SendMessageToServerTask().execute(str);
             }
         } catch (UnknownHostException e) {
             e.printStackTrace();
@@ -255,9 +260,11 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
         try {
             if (ServerHolder.getSocket() != null) {
                 String str = "Disconnect##"+CLIENT_NAME;
-                PrintWriter out = new PrintWriter(new BufferedWriter(
-                        new OutputStreamWriter(ServerHolder.getSocket().getOutputStream())), true);
-                out.println(str);
+                if (out == null) {
+                    out = new PrintWriter(new BufferedWriter(
+                            new OutputStreamWriter(ServerHolder.getSocket().getOutputStream())), true);
+                }
+                new SendMessageToServerTask().execute(str);
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -417,6 +424,15 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
         }
     }
 
+    private class SendMessageToServerTask extends AsyncTask<String, Void, Void> {
+        protected Void doInBackground(String... params) {
+            String message = params[0];
+            out.println(message);
+            return null;
+        }
+    }
+
+
 }
 
 enum Operation {
diff --git a/KvizClient/app/src/main/java/onlab/kvizclient/QuizUpActivity.java b/KvizClient/app/src/main/java/onlab/kvizclient/QuizUpActivity.java
index 9a65e1e8e47b2fe461c9b3ca47accf4e0be043e5..7feeebe44324fa5ce8f30725bb6ecc395d98dd71 100644
--- a/KvizClient/app/src/main/java/onlab/kvizclient/QuizUpActivity.java
+++ b/KvizClient/app/src/main/java/onlab/kvizclient/QuizUpActivity.java
@@ -1,5 +1,6 @@
 package onlab.kvizclient;
 
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
@@ -51,7 +52,7 @@ public class QuizUpActivity extends AppCompatActivity implements MultipleChoiceF
             input = new BufferedReader(new InputStreamReader(ServerHolder.getSocket().getInputStream()));
             output = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(ServerHolder.getSocket().getOutputStream())),true);
-            output.println("$$$$");
+            new SendMessageToServerTask().execute("$$$$");
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -127,8 +128,15 @@ public class QuizUpActivity extends AppCompatActivity implements MultipleChoiceF
         Date questionAnsweredDate = new Date();
         double answerTime =  (double)(questionAnsweredDate.getTime() - questionReceivedDate.getTime()) / 1000;
         Log.d("A válasz: ", Integer.toString(answer) + " (" + Double.toString(answerTime) + "s)");
-        output.println(Integer.toString(answer) + "##" + Double.toString(answerTime));
+        new SendMessageToServerTask().execute(Integer.toString(answer) + "##" + Double.toString(answerTime));
     }
 
+    private class SendMessageToServerTask extends AsyncTask<String, Void, Void> {
+        protected Void doInBackground(String... params) {
+            String message = params[0];
+            output.println(message);
+            return null;
+        }
+    }
 
 }
diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java
index 9ef05ee52620316490b57fa06f060e5a1852dc46..4df3b551f0f00f607d070f2bf3fe1b8f4db3b769 100644
--- a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java
+++ b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java
@@ -1,6 +1,7 @@
 package onlab.kvizserver;
 
 import android.content.pm.PackageManager;
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
@@ -203,11 +204,13 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme
         for (int i=0;i<outputs.size();i++) {
             gameControlFragment.displayAnswerOfPlayer(i,"The answer of " + playerAnswers[i].getPlayerName() + ": ");
             if (question.getType() == Question.MULTIPLE_CHOICE) {
-                outputs.get(i).println("questionMC##" + questionString + "##" + answers.get(0) + "##" + answers.get(1)
+                String message = "questionMC##" + questionString + "##" + answers.get(0) + "##" + answers.get(1)
                         + "##" + answers.get(2) + "##" + answers.get(3) + "##" + playerAnswersString
-                        + "##" + Integer.toString(i) + "##-1##" + Integer.toString(timeLimit));
+                        + "##" + Integer.toString(i) + "##-1##" + Integer.toString(timeLimit);
+                new SendMessageToClientTask().execute(Integer.toString(i), message);
             } else {
-                outputs.get(i).println("questionG##" + questionString + "##" + Integer.toString(timeLimit));
+                String message = "questionG##" + questionString + "##" + Integer.toString(timeLimit);
+                new SendMessageToClientTask().execute(Integer.toString(i), message);
             }
         }
 
@@ -225,14 +228,16 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme
         for (int i=0;i<outputs.size();i++) {
             if (answers.size() == 4) {
                 String playerAnswersString = gson.toJson(playerAnswers);
-                outputs.get(i).println("answerMC##" + questionString + "##" + answers.get(0) + "##" + answers.get(1)
+                String message = "answerMC##" + questionString + "##" + answers.get(0) + "##" + answers.get(1)
                         + "##" + answers.get(2) + "##" + answers.get(3) + "##" + playerAnswersString
-                        + "##" + Integer.toString(i) + "##" + Integer.toString(correctAnswer) + "##-1");
+                        + "##" + Integer.toString(i) + "##" + Integer.toString(correctAnswer) + "##-1";
+                new SendMessageToClientTask().execute(Integer.toString(i), message);
             } else {
                 calculateGuessQuestionWinner();
                 String playerAnswersString = gson.toJson(playerAnswers);
-                outputs.get(i).println("answerG##" + questionString + "##" + Integer.toString(correctAnswer)
-                        + "##" + playerAnswersString + "##" + Integer.toString(i));
+                String message = "answerG##" + questionString + "##" + Integer.toString(correctAnswer)
+                        + "##" + playerAnswersString + "##" + Integer.toString(i);
+                new SendMessageToClientTask().execute(Integer.toString(i), message);
             }
         }
     }
@@ -291,15 +296,12 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme
         Iterator<Question> it = questions.iterator();
         while( it.hasNext() ) {
             Question q = it.next();
-            boolean selected = false;
             String topic = q.getTopic();
             if(q.getType() == Question.MULTIPLE_CHOICE &&
                     selectedMultiple.get(topic) != null && selectedMultiple.get(topic) < numberOfMultipleChoice) {
-                selected = true;
                 selectedMultiple.put(topic, selectedMultiple.get(topic) + 1);
             } else if (q.getType() == Question.GUESS &&
                     selectedGuess.get(topic) != null && selectedGuess.get(topic) < numberOfGuess) {
-                selected = true;
                 selectedGuess.put(topic, selectedGuess.get(topic) + 1);
             } else {
                 q.setCurrentIndex(0);
@@ -338,4 +340,12 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme
         }
     }
 
+    private class SendMessageToClientTask extends AsyncTask<String, Void, Void> {
+        protected Void doInBackground(String... params) {
+            int index = Integer.parseInt(params[0]);
+            String message = params[1];
+            outputs.get(index).println(message);
+            return null;
+        }
+    }
 }
diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java
index c6ee36d0997d5d45c725ab607b0e79cb261e8b47..e5ab6a06631fbb46b4eaaa42a0eee4580f533d34 100644
--- a/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java
+++ b/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java
@@ -1,5 +1,6 @@
 package onlab.kvizserver;
 
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
@@ -94,16 +95,14 @@ public class QuizUpActivity extends AppCompatActivity {
 
         for (int i=0;i<numberOfPlayers;i++) {
             final TextView playerAnswerTextView = new TextView(this);
-            //playerAnswerTextView.setText("The answer of the " + Integer.toString(i + 1) + ". player: ");
-            playerAnswerTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
+            playerAnswerTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
             playerAnswersLinearLayout.addView(playerAnswerTextView);
             playerAnswerTextViews.add(playerAnswerTextView);
         }
 
         for (int i=0;i<numberOfPlayers;i++) {
             final TextView playerScoreTextView = new TextView(this);
-            //playerScoreTextView.setText("The score of the " + Integer.toString(i + 1) + ". player: 0");
-            playerScoreTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
+            playerScoreTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
             playerAnswersLinearLayout.addView(playerScoreTextView);
             playerScoreTextViews.add(playerScoreTextView);
         }
@@ -113,10 +112,10 @@ public class QuizUpActivity extends AppCompatActivity {
                 inputs.add(new BufferedReader(new InputStreamReader(ClientHolder.get(i).getClientsocket().getInputStream())));
                 PrintWriter output = new PrintWriter(new BufferedWriter(
                         new OutputStreamWriter(ClientHolder.get(i).getClientsocket().getOutputStream())), true);
-                output.println("$$$$");
+                //output.println("$$$$");
                 outputs.add(output);
                 Log.d("QuizUpActivity", "activity started");
-                output.println("GameStarted##quizup");
+                //output.println("GameStarted##quizup");
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -165,7 +164,7 @@ public class QuizUpActivity extends AppCompatActivity {
                         + "##" + answers.get(0) + "##" + answers.get(1)
                         + "##" + answers.get(2) + "##" + answers.get(3) + "##" + playerAnswersString
                         + "##" + Integer.toString(i) + "##-1";
-                outputs.get(i).println(message);
+                new SendMessageToClientTask().execute(Integer.toString(i), message);
                 Log.d("KvizServer", Integer.toString(i) + "-es kliensnek küldött üzenet: " + message);
             }
             round++;
@@ -184,14 +183,14 @@ public class QuizUpActivity extends AppCompatActivity {
                 messageForPlayers[i] = "message##" + Integer.toString(playerScores[i]) + "##" + Integer.toString(playerScores[1-i]) + "##";
             }
             if (playerScores[0] > playerScores[1]) {
-                outputs.get(0).println(messageForPlayers[0] + "Nyertél!");
-                outputs.get(1).println(messageForPlayers[1] + "Vesztettél!");
+                new SendMessageToClientTask().execute(Integer.toString(0), messageForPlayers[0] + "Nyertél!");
+                new SendMessageToClientTask().execute(Integer.toString(1), messageForPlayers[1] + "Vesztettél!");
             } else if (playerScores[1] > playerScores[0]) {
-                outputs.get(1).println(messageForPlayers[1] + "Nyertél!");
-                outputs.get(0).println(messageForPlayers[0] + "Vesztettél!");
+                new SendMessageToClientTask().execute(Integer.toString(0), messageForPlayers[1] + "Nyertél!");
+                new SendMessageToClientTask().execute(Integer.toString(1), messageForPlayers[0] + "Vesztettél!");
             } else {
-                outputs.get(0).println(messageForPlayers[0] + "Döntetlen!");
-                outputs.get(1).println(messageForPlayers[1] + "Döntetlen!");
+                new SendMessageToClientTask().execute(Integer.toString(0), messageForPlayers[0] + "Döntetlen!");
+                new SendMessageToClientTask().execute(Integer.toString(1), messageForPlayers[1] + "Döntetlen!");
             }
         }
     }
@@ -220,7 +219,7 @@ public class QuizUpActivity extends AppCompatActivity {
                     + "##" + answers.get(0) + "##" + answers.get(1)
                     + "##" + answers.get(2) + "##" + answers.get(3) + "##" + playerAnswersString
                     + "##" + Integer.toString(i) + "##" + Integer.toString(correctAnswer);
-            outputs.get(i).println(message);
+            new SendMessageToClientTask().execute(Integer.toString(i), message);
             Log.d("KvizServer", Integer.toString(i) + "-es kliensnek küldött üzenet: " + message);
         }
     }
@@ -234,8 +233,9 @@ public class QuizUpActivity extends AppCompatActivity {
                     @Override
                     public void run() {
                         for (int i=0;i<2;i++) {
-                            outputs.get(i).println("message##" + Integer.toString(playerScores[i])
-                                    + "##" + Integer.toString(playerScores[1-i]) + "##" + message);
+                            String mess = "message##" + Integer.toString(playerScores[i])
+                                    + "##" + Integer.toString(playerScores[1-i]) + "##" + message;
+                            new SendMessageToClientTask().execute(Integer.toString(i), mess);
                         }
                     }
                 });
@@ -259,6 +259,9 @@ public class QuizUpActivity extends AppCompatActivity {
         }
 
         public void run() {
+            output.println("$$$$");
+            output.println("GameStarted##quizup");
+
             while (!Thread.currentThread().isInterrupted()) {
                 try {
                     String read = input.readLine();
@@ -317,4 +320,13 @@ public class QuizUpActivity extends AppCompatActivity {
         }
     }
 
+    private class SendMessageToClientTask extends AsyncTask<String, Void, Void> {
+        protected Void doInBackground(String... params) {
+            int index = Integer.parseInt(params[0]);
+            String message = params[1];
+            outputs.get(index).println(message);
+            return null;
+        }
+    }
+
 }
diff --git a/KvizServer/app/src/main/res/layout/activity_quiz_up.xml b/KvizServer/app/src/main/res/layout/activity_quiz_up.xml
index 313ce6c63cd00391af82e8ca11fd22d8e0d12ac0..c6004853bf9e3a44b97f48db1df6a6f1aca7ae64 100644
--- a/KvizServer/app/src/main/res/layout/activity_quiz_up.xml
+++ b/KvizServer/app/src/main/res/layout/activity_quiz_up.xml
@@ -15,37 +15,37 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/QuestionText"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/Answer1TextView"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/Answer2TextView"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/Answer3TextView"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/Answer4TextView"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:id="@+id/CorrectAnswerTextView"
-            android:textSize="30sp"/>
+            android:textSize="20sp"/>
 
         <LinearLayout
             android:layout_width="match_parent"