diff --git a/classes/production/voting-booth-gui/main/VotingBoothGUIManager.class b/classes/production/voting-booth-gui/main/VotingBoothGUIManager.class
deleted file mode 100644
index edf8cb2..0000000
Binary files a/classes/production/voting-booth-gui/main/VotingBoothGUIManager.class and /dev/null differ
diff --git a/classes/production/voting-booth-gui/main/select_candidate_by_picture/SelectCandidateByPictureController.class b/classes/production/voting-booth-gui/main/select_candidate_by_picture/SelectCandidateByPictureController.class
deleted file mode 100644
index 6a409a6..0000000
Binary files a/classes/production/voting-booth-gui/main/select_candidate_by_picture/SelectCandidateByPictureController.class and /dev/null differ
diff --git a/classes/production/voting-booth-gui/main/select_candidate_by_picture/select_candidate_by_picture.fxml b/classes/production/voting-booth-gui/main/select_candidate_by_picture/select_candidate_by_picture.fxml
deleted file mode 100644
index 6095f9b..0000000
--- a/classes/production/voting-booth-gui/main/select_candidate_by_picture/select_candidate_by_picture.fxml
+++ /dev/null
@@ -1,220 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-   
-      
-         
-            
-               
-                  
-               
-            
-            
-               
-                  
-               
-            
-         
-         
-            
-            
-         
-         
-            
-         
-      
-      
-         
-            
-               
-                  
-               
-            
-            
-               
-                  
-               
-            
-            
-               
-                  
-               
-            
-         
-         
-            
-            
-            
-         
-         
-            
-         
-      
-      
-        
-          
-        
-        
-          
-          
-          
-        
-         
-            
-              
-                
-              
-              
-                
-                
-                
-              
-               
-                  
-                     
-                        
-                     
-                  
-                  
-                     
-                        
-                     
-                  
-                  
-                     
-                        
-                     
-                  
-               
-            
-            
-              
-                
-                  
-                
-              
-              
-                
-                
-                
-              
-               
-                  
-                     
-                        
-                          
-                            
-                            
-                              
-                          
-                          
-                            
-                            
-                          
-                           
-                              
-                                 
-                                    
-                                       
-                                          
-                                       
-                                    
-                                 
-                              
-                              
-                                 
-                                    
-                                       
-                                          
-                                       
-                                    
-                                 
-                              
-                              
-                                 
-                                    
-                                       
-                                          
-                                       
-                                    
-                                 
-                              
-                              
-                                 
-                                    
-                                 
-                              
-                              
-                                 
-                                    
-                                 
-                              
-                              
-                                 
-                                    
-                                 
-                              
-                           
-                        
-                     
-                  
-               
-            
-         
-      
-   
-   
-      
-   
-   
-      
-      
-      
-   
-
diff --git a/voting-booth/build.gradle b/voting-booth/build.gradle
index 23f2dec..2a2bcc2 100644
--- a/voting-booth/build.gradle
+++ b/voting-booth/build.gradle
@@ -56,6 +56,7 @@ dependencies {
 
     // Jar that creates barcodes
     compile group: 'net.sourceforge.barbecue', name: 'barbecue', version: '1.5-beta1'
+    compile 'com.google.zxing:core:3.3.0'
 
     // Google protobufs
     compile 'com.google.protobuf:protobuf-java:3.+'
diff --git a/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/PrinterController.java b/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/PrinterController.java
index 61bb7de..99f3682 100644
--- a/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/PrinterController.java
+++ b/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/PrinterController.java
@@ -3,40 +3,65 @@ package meerkat.voting.gui.ui.controllersFX;
 /**
  * Created by Laura on 01/12/2017.
  */
+import javafx.embed.swing.SwingFXUtils;
 import javafx.fxml.FXML;
 import javafx.scene.Node;
+import javafx.scene.control.Label;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
 import javafx.scene.layout.StackPane;
+import javafx.scene.layout.VBox;
 import javafx.scene.text.Text;
 import meerkat.voting.gui.ui.CommandPend;
 import meerkat.voting.gui.ui.uicommands.UICommand;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
+
 /**
  * Main controller class for the entire layout.
  */
 public class PrinterController {
 
-    /** Holder of a switchable vista. */
+    /** Holder of vista. */
     @FXML
-    private StackPane printerHolder;
+    private VBox vBox;
     @FXML
     private Text content;
 
-    /**
-     * Replaces the vista displayed in the vista holder with a new vista.
-     *
-     * @param node the vista node to be swapped in.
-     */
-    public void setVista(Node node) {
-        printerHolder.getChildren().setAll(node);
-    }
 
     public void setContent(String s) {
-        content.setText(s);
+        Text txt = new Text(s);
+        vBox.getChildren().clear();
+        vBox.getChildren().add(txt);
+        vBox.getScene().getWindow().sizeToScene();
     }
 
     public void addContent(String s) {
-        String old_content = content.getText();
-        content.setText(old_content+"\n"+s);
+        Text txt = new Text(s);
+        vBox.getChildren().add(txt);
+        vBox.getScene().getWindow().sizeToScene();
+    }
+
+    public void setContent(BufferedImage i) {
+        ImageView imageView = new ImageView();
+        Image image = SwingFXUtils.toFXImage(i, null);
+        imageView.setImage(image);
+        vBox.getChildren().clear();
+        vBox.getChildren().add(imageView);
+        vBox.getScene().getWindow().sizeToScene();
+    }
+
+    public void addContent(BufferedImage i) {
+        ImageView imageView = new ImageView();
+        Image image = SwingFXUtils.toFXImage(i, null);
+        imageView.setImage(image);
+        vBox.getChildren().add(imageView);
+//        String old_content = content.getText();
+//        content.setText(old_content+"\n"+s);
+        vBox.getScene().getWindow().sizeToScene();
     }
 
 }
\ No newline at end of file
diff --git a/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/VistaNavigator.java b/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/VistaNavigator.java
index d2568dd..ef75eb1 100644
--- a/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/VistaNavigator.java
+++ b/voting-booth/src/main/java/meerkat/voting/gui/ui/controllersFX/VistaNavigator.java
@@ -9,6 +9,7 @@ import javafx.scene.Node;
 import meerkat.voting.gui.ui.GraphicalUI;
 import meerkat.voting.gui.ui.uicommands.UICommand;
 
+import java.awt.image.BufferedImage;
 import java.io.IOException;
 
 /**
@@ -145,6 +146,26 @@ public class VistaNavigator {
         );
     }
 
+    /**
+     * Prints the content into the printer application layout.
+     *
+     * @param content a String with the content that should be printed.
+     * @param mode if value 'a' means append, any other character will erase current content of printer
+     */
+    public static void printFX(BufferedImage content, char mode) {
+        Platform.runLater(new Runnable() {
+                              @Override
+                              public void run() {
+                                  if (mode=='a') {
+                                      printerController.addContent(content);
+                                  } else {
+                                      printerController.setContent(content);
+                                  }
+                              }
+                          }
+        );
+    }
+
     /**
      * Loads the 'LOADING' vista
      * vistaHolder pane of the main application layout.
diff --git a/voting-booth/src/main/java/meerkat/voting/output/AsyncRunnableOutputDevice.java b/voting-booth/src/main/java/meerkat/voting/output/AsyncRunnableOutputDevice.java
index 0052a2c..e8acad6 100644
--- a/voting-booth/src/main/java/meerkat/voting/output/AsyncRunnableOutputDevice.java
+++ b/voting-booth/src/main/java/meerkat/voting/output/AsyncRunnableOutputDevice.java
@@ -1,6 +1,7 @@
 package meerkat.voting.output;
 
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.zxing.WriterException;
 import meerkat.protobuf.Voting.BallotSecrets;
 import meerkat.protobuf.Voting.PlaintextBallot;
 import meerkat.protobuf.Voting.SignedEncryptedBallot;
@@ -11,6 +12,7 @@ import meerkat.voting.output.outputcommands.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
 import java.util.concurrent.ArrayBlockingQueue;
 
 /**
diff --git a/voting-booth/src/main/java/meerkat/voting/output/FXWindowOutputDevice.java b/voting-booth/src/main/java/meerkat/voting/output/FXWindowOutputDevice.java
index 64ba1c5..6becf44 100644
--- a/voting-booth/src/main/java/meerkat/voting/output/FXWindowOutputDevice.java
+++ b/voting-booth/src/main/java/meerkat/voting/output/FXWindowOutputDevice.java
@@ -1,6 +1,7 @@
 package meerkat.voting.output;
 
 import com.google.protobuf.ByteString;
+import com.google.zxing.WriterException;
 import meerkat.protobuf.Crypto.EncryptionRandomness;
 import meerkat.protobuf.Crypto.RandomnessGenerationProof;
 import meerkat.protobuf.Voting.BallotSecrets;
@@ -14,6 +15,9 @@ import meerkat.voting.output.outputcommands.CommitOutputCommand;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
 /**
  * A toy OutputDevice class
  * outputs everything simply to the System console
@@ -35,31 +39,32 @@ public class FXWindowOutputDevice extends AsyncRunnableOutputDevice {
     public void doCommitToBallot(CommitOutputCommand command) {
         logger.debug("entered method doCommitToBallot");
         PlaintextBallot plaintextBallot = command.getPlaintext();
-        long plaintextSerialNumber = plaintextBallot.getSerialNumber();
-        String toPrint = "";
+        ByteString channel = command.getChannelIdentifierByteString();
+        printPlainText(plaintextBallot, channel);
 
-        toPrint+="Commitment of Ballot #" + plaintextSerialNumber;
-        toPrint+="\n";
-        toPrint+="(channel): ";
-        toPrint+="\n";
-        toPrint+=bytesToString(command.getChannelIdentifierByteString());
-        toPrint+="\n";
-        toPrint+="(plaintext): ";
-        toPrint+="\n";
-        toPrint+=plaintextBallot;
-        SignedEncryptedBallot signedEncryptedBallot = command.getSignedEncryptedBallot();
-        long encryptedSerialNumber = signedEncryptedBallot.getEncryptedBallot().getSerialNumber();
-        toPrint+="Commitment of Ballot #" + encryptedSerialNumber + " (ciphertext):";
-        toPrint+="\n";
-        if (plaintextSerialNumber != encryptedSerialNumber) {
-            logger.error("plaintext and encryption serial numbers do not match!! plaintext# = " +
-                    plaintextSerialNumber + ", ciphertext# = " + encryptedSerialNumber);
+        String toQRCode;
+//        SignedEncryptedBallot signedEncryptedBallot = command.getSignedEncryptedBallot();
+//        long encryptedSerialNumber = signedEncryptedBallot.getEncryptedBallot().getSerialNumber();
+//        toPrint+="Commitment of Ballot #" + encryptedSerialNumber + " (ciphertext):";
+//        toPrint+="\n";
+//        if (plaintextSerialNumber != encryptedSerialNumber) {
+//            logger.error("plaintext and encryption serial numbers do not match!! plaintext# = " +
+//                    plaintextSerialNumber + ", ciphertext# = " + encryptedSerialNumber);
+//        }
+//        ByteString encryptedData = signedEncryptedBallot.getEncryptedBallot().getData().getData();
+//        toPrint+=bytesToString(encryptedData);
+//        toPrint+="\n";
+//        VistaNavigator.printFX(toPrint, 'w');
+        toQRCode = "test";
+        try {
+            printQRCode(toQRCode, 250);
+            command.getCallback().onSuccess(null);
+        } catch (IOException e) {
+            command.getCallback().onFailure(e);
+        } catch (WriterException e) {
+            command.getCallback().onFailure(e);
         }
-        ByteString encryptedData = signedEncryptedBallot.getEncryptedBallot().getData().getData();
-        toPrint+=bytesToString(encryptedData);
-        toPrint+="\n";
-        VistaNavigator.printFX(toPrint, 'w');
-        command.getCallback().onSuccess(null);
+
     }
 
 
@@ -105,6 +110,26 @@ public class FXWindowOutputDevice extends AsyncRunnableOutputDevice {
         command.getCallback().onSuccess(null);
     }
 
+    private void printPlainText(PlaintextBallot plaintextBallot, ByteString channel) {
+        long plaintextSerialNumber = plaintextBallot.getSerialNumber();
+        String toPrint = "";
+        toPrint+="Commitment of Ballot #" + plaintextSerialNumber;
+        toPrint+="\n";
+        toPrint+="(channel): ";
+        toPrint+="\n";
+        toPrint+=bytesToString(channel);
+        toPrint+="\n";
+        toPrint+="(plaintext): ";
+        toPrint+="\n";
+        toPrint+=plaintextBallot;
+        VistaNavigator.printFX(toPrint, 'w');
+    }
+
+    private void printQRCode(String toQRCode, int size) throws IOException, WriterException {
+        BufferedImage image = null;
+        image = GenerateQRCode.createQRImage(toQRCode, size);
+        VistaNavigator.printFX(image, 'a');
+    }
 
     private void printEncryptionRandomness (EncryptionRandomness encryptionRandomness) {
         String msg = "Encryption Randomness = ";
diff --git a/voting-booth/src/main/java/meerkat/voting/output/GenerateQRCode.java b/voting-booth/src/main/java/meerkat/voting/output/GenerateQRCode.java
new file mode 100644
index 0000000..bc46815
--- /dev/null
+++ b/voting-booth/src/main/java/meerkat/voting/output/GenerateQRCode.java
@@ -0,0 +1,64 @@
+package meerkat.voting.output;
+
+/**
+ * Created by Laura on 1/25/2017.
+ */
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.Hashtable;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+public class GenerateQRCode {
+
+    /**
+     * @param args
+     * @throws WriterException
+     * @throws IOException
+     */
+    public static void main(String[] args) throws WriterException, IOException {
+        String qrCodeText = "http://www.journaldev.com";
+        int size = 125;
+        createQRImage(qrCodeText, size);
+        System.out.println("DONE");
+    }
+
+    public static BufferedImage createQRImage(String qrCodeText, int size) throws WriterException, IOException {
+        // Create the ByteMatrix for the QR-Code that encodes the given String
+        Hashtable hintMap = new Hashtable();
+        hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
+        QRCodeWriter qrCodeWriter = new QRCodeWriter();
+        BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText,
+                BarcodeFormat.QR_CODE, size, size, hintMap);
+        // Make the BufferedImage that are to hold the QRCode
+        int matrixWidth = byteMatrix.getWidth();
+        BufferedImage image = new BufferedImage(matrixWidth, matrixWidth,
+                BufferedImage.TYPE_INT_RGB);
+        image.createGraphics();
+
+        Graphics2D graphics = (Graphics2D) image.getGraphics();
+        graphics.setColor(Color.WHITE);
+        graphics.fillRect(0, 0, matrixWidth, matrixWidth);
+        // Paint and save the image using the ByteMatrix
+        graphics.setColor(Color.BLACK);
+
+        for (int i = 0; i < matrixWidth; i++) {
+            for (int j = 0; j < matrixWidth; j++) {
+                if (byteMatrix.get(i, j)) {
+                    graphics.fillRect(i, j, 1, 1);
+                }
+            }
+        }
+        return image;
+//        ImageIO.write(image, fileType, qrFile);
+    }
+
+}
\ No newline at end of file
diff --git a/voting-booth/src/main/resources/views/printer.fxml b/voting-booth/src/main/resources/views/printer.fxml
index db1d265..e79205e 100644
--- a/voting-booth/src/main/resources/views/printer.fxml
+++ b/voting-booth/src/main/resources/views/printer.fxml
@@ -1,21 +1,10 @@
 
 
-
-
 
-
 
 
-
+
     
-      
-        
-          
-               
-                  
-               
-            
-        
-      
+