diff --git a/build/classes/main/fr/theshark34/openlauncherlib/Authenticator.class b/build/classes/main/fr/theshark34/openlauncherlib/Authenticator.class
index f32b446..c14194e 100644
Binary files a/build/classes/main/fr/theshark34/openlauncherlib/Authenticator.class and b/build/classes/main/fr/theshark34/openlauncherlib/Authenticator.class differ
diff --git a/build/libs/openlauncherlib-1.0-RELEASE.jar b/build/libs/openlauncherlib-1.0-RELEASE.jar
index 303374f..7400086 100644
Binary files a/build/libs/openlauncherlib-1.0-RELEASE.jar and b/build/libs/openlauncherlib-1.0-RELEASE.jar differ
diff --git a/build/reports/tests/base-style.css b/build/reports/tests/base-style.css
new file mode 100644
index 0000000..89ee415
--- /dev/null
+++ b/build/reports/tests/base-style.css
@@ -0,0 +1,162 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+    /*behavior: url(css3-pie-1.0beta3.htc);*/
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}
diff --git a/build/reports/tests/fr.theshark34.openlauncherlib.AppTest.html b/build/reports/tests/fr.theshark34.openlauncherlib.AppTest.html
new file mode 100644
index 0000000..6804e65
--- /dev/null
+++ b/build/reports/tests/fr.theshark34.openlauncherlib.AppTest.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta httpEquiv="Content-Type" content="text/html; charset=utf-8"/>
+<title>Test results - Class fr.theshark34.openlauncherlib.AppTest</title>
+<link href="base-style.css" rel="stylesheet" type="text/css"/>
+<link href="style.css" rel="stylesheet" type="text/css"/>
+<script src="report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Class fr.theshark34.openlauncherlib.AppTest</h1>
+<div class="breadcrumbs">
+<a href="index.html">all</a> &gt; 
+<a href="fr.theshark34.openlauncherlib.html">fr.theshark34.openlauncherlib</a> &gt; AppTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">1</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.002s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testApp</td>
+<td>0.002s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>Generated by 
+<a href="http://www.gradle.org">Gradle 1.5</a> at 14 avr. 2015 13:00:00</p>
+</div>
+</div>
+</body>
\ No newline at end of file
diff --git a/build/reports/tests/fr.theshark34.openlauncherlib.html b/build/reports/tests/fr.theshark34.openlauncherlib.html
new file mode 100644
index 0000000..825ec78
--- /dev/null
+++ b/build/reports/tests/fr.theshark34.openlauncherlib.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta httpEquiv="Content-Type" content="text/html; charset=utf-8"/>
+<title>Test results - Package fr.theshark34.openlauncherlib</title>
+<link href="base-style.css" rel="stylesheet" type="text/css"/>
+<link href="style.css" rel="stylesheet" type="text/css"/>
+<script src="report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package fr.theshark34.openlauncherlib</h1>
+<div class="breadcrumbs">
+<a href="index.html">all</a> &gt; fr.theshark34.openlauncherlib</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">1</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.002s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">100%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thread>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thread>
+<tr>
+<td class="success">
+<a href="fr.theshark34.openlauncherlib.AppTest.html">AppTest</a>
+</td>
+<td>1</td>
+<td>0</td>
+<td>0.002s</td>
+<td class="success">100%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>Generated by 
+<a href="http://www.gradle.org">Gradle 1.5</a> at 14 avr. 2015 13:00:00</p>
+</div>
+</div>
+</body>
\ No newline at end of file
diff --git a/build/reports/tests/index.html b/build/reports/tests/index.html
index 9289f70..2c75973 100644
--- a/build/reports/tests/index.html
+++ b/build/reports/tests/index.html
@@ -1,12 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<meta httpEquiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>Test results - Test Summary</title>
-<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
-<link href="css/style.css" rel="stylesheet" type="text/css"/>
-<script src="js/report.js" type="text/javascript"></script>
+<link href="base-style.css" rel="stylesheet" type="text/css"/>
+<link href="style.css" rel="stylesheet" type="text/css"/>
+<script src="report.js" type="text/javascript"></script>
 </head>
 <body>
 <div id="content">
@@ -31,14 +30,8 @@ <h1>Test Summary</h1>
 </div>
 </td>
 <td>
-<div class="infoBox" id="ignored">
-<div class="counter">0</div>
-<p>ignored</p>
-</div>
-</td>
-<td>
 <div class="infoBox" id="duration">
-<div class="counter">0s</div>
+<div class="counter">0.002s</div>
 <p>duration</p>
 </div>
 </td>
@@ -72,7 +65,6 @@ <h2>Packages</h2>
 <th>Package</th>
 <th>Tests</th>
 <th>Failures</th>
-<th>Ignored</th>
 <th>Duration</th>
 <th>Success rate</th>
 </tr>
@@ -80,13 +72,12 @@ <h2>Packages</h2>
 <tbody>
 <tr>
 <td class="success">
-<a href="packages/fr.theshark34.openlauncherlib.html">fr.theshark34.openlauncherlib</a>
+<a href="fr.theshark34.openlauncherlib.html">fr.theshark34.openlauncherlib</a>
 </td>
 <td>1</td>
 <td>0</td>
-<td>0</td>
-<td>0s</td>
-<td class="success">100%</td>
+<td>0.002s</td>
+<td class="success">0.002s</td>
 </tr>
 </tbody>
 </table>
@@ -99,7 +90,6 @@ <h2>Classes</h2>
 <th>Class</th>
 <th>Tests</th>
 <th>Failures</th>
-<th>Ignored</th>
 <th>Duration</th>
 <th>Success rate</th>
 </tr>
@@ -107,11 +97,10 @@ <h2>Classes</h2>
 <tbody>
 <tr>
 <td class="success"/>
-<a href="classes/fr.theshark34.openlauncherlib.AppTest.html">fr.theshark34.openlauncherlib.AppTest</a>
+<a href="fr.theshark34.openlauncherlib.AppTest.html">fr.theshark34.openlauncherlib.AppTest</a>
 <td>1</td>
 <td>0</td>
-<td>0</td>
-<td>0s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 </tbody>
@@ -119,14 +108,8 @@ <h2>Classes</h2>
 </div>
 </div>
 <div id="footer">
-<p>
-<div>
-<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
-<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
-</label>
-</div>Generated by 
-<a href="http://www.gradle.org">Gradle 2.3</a> at 12 mars 2015 18:41:37</p>
+<p>Generated by 
+<a href="http://www.gradle.org">Gradle 1.5</a> at 14 avr. 2015 13:00:00</p>
 </div>
 </div>
-</body>
-</html>
+</body>
\ No newline at end of file
diff --git a/build/reports/tests/report.js b/build/reports/tests/report.js
new file mode 100644
index 0000000..a4455e4
--- /dev/null
+++ b/build/reports/tests/report.js
@@ -0,0 +1,101 @@
+var tabs = new Object();
+
+function initTabs() {
+    var container = document.getElementById('tabs');
+    tabs.tabs = findTabs(container);
+    tabs.titles = findTitles(tabs.tabs);
+    tabs.headers = findHeaders(container);
+    tabs.select = select;
+    tabs.deselectAll = deselectAll;
+    tabs.select(0);
+    return true;
+}
+
+window.onload = initTabs;
+
+function switchTab() {
+    var id = this.id.substr(1);
+    for (var i = 0; i < tabs.tabs.length; i++) {
+        if (tabs.tabs[i].id == id) {
+            tabs.select(i);
+            break;
+        }
+    }
+    return false;
+}
+
+function select(i) {
+    this.deselectAll();
+    changeElementClass(this.tabs[i], 'tab selected');
+    changeElementClass(this.headers[i], 'selected');
+    while (this.headers[i].firstChild) {
+        this.headers[i].removeChild(this.headers[i].firstChild);
+    }
+    var h2 = document.createElement('H2');
+    h2.appendChild(document.createTextNode(this.titles[i]));
+    this.headers[i].appendChild(h2);
+}
+
+function deselectAll() {
+    for (var i = 0; i < this.tabs.length; i++) {
+        changeElementClass(this.tabs[i], 'tab deselected');
+        changeElementClass(this.headers[i], 'deselected');
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+        var a = document.createElement('A');
+        a.setAttribute('id', 'ltab' + i);
+        a.setAttribute('href', '#tab' + i);
+        a.onclick = switchTab;
+        a.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(a);
+    }
+}
+
+function changeElementClass(element, classValue) {
+    if (element.getAttribute('className')) {
+        /* IE */
+        element.setAttribute('className', classValue)
+    } else {
+        element.setAttribute('class', classValue)
+    }
+}
+
+function findTabs(container) {
+    return findChildElements(container, 'DIV', 'tab');
+}
+
+function findHeaders(container) {
+    var owner = findChildElements(container, 'UL', 'tabLinks');
+    return findChildElements(owner[0], 'LI', null);
+}
+
+function findTitles(tabs) {
+    var titles = new Array();
+    for (var i = 0; i < tabs.length; i++) {
+        var tab = tabs[i];
+        var header = findChildElements(tab, 'H2', null)[0];
+        header.parentNode.removeChild(header);
+        if (header.innerText) {
+            titles.push(header.innerText)
+        } else {
+            titles.push(header.textContent)
+        }
+    }
+    return titles;
+}
+
+function findChildElements(container, name, targetClass) {
+    var elements = new Array();
+    var children = container.childNodes;
+    for (var i = 0; i < children.length; i++) {
+        var child = children.item(i);
+        if (child.nodeType == 1 && child.nodeName == name) {
+            if (targetClass && child.className.indexOf(targetClass) < 0) {
+                continue;
+            }
+            elements.push(child);
+        }
+    }
+    return elements;
+}
diff --git a/build/reports/tests/style.css b/build/reports/tests/style.css
new file mode 100644
index 0000000..c558310
--- /dev/null
+++ b/build/reports/tests/style.css
@@ -0,0 +1,81 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+    /*behavior: url(css3-pie-1.0beta3.htc);*/
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}
diff --git a/build/test-results/TEST-fr.theshark34.openlauncherlib.AppTest.xml b/build/test-results/TEST-fr.theshark34.openlauncherlib.AppTest.xml
index 527fc82..0ec3d23 100644
--- a/build/test-results/TEST-fr.theshark34.openlauncherlib.AppTest.xml
+++ b/build/test-results/TEST-fr.theshark34.openlauncherlib.AppTest.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="fr.theshark34.openlauncherlib.AppTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2015-03-12T17:41:37" hostname="Shark-Windows" time="0.0">
+<?xml version="1.1" encoding="UTF-8"?>
+<testsuite name="fr.theshark34.openlauncherlib.AppTest" tests="1" failures="0" errors="0" timestamp="2015-04-14T11:00:00" hostname="Shark-Portable-Linux" time="0.002">
   <properties/>
-  <testcase name="testApp" classname="fr.theshark34.openlauncherlib.AppTest" time="0.0"/>
+  <testcase name="testApp" classname="fr.theshark34.openlauncherlib.AppTest" time="0.002"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
 </testsuite>
diff --git a/build/test-results/binary/test/output.bin b/build/test-results/binary/test/output.bin
deleted file mode 100644
index e69de29..0000000
diff --git a/build/test-results/binary/test/output.bin.idx b/build/test-results/binary/test/output.bin.idx
deleted file mode 100644
index f76dd23..0000000
Binary files a/build/test-results/binary/test/output.bin.idx and /dev/null differ
diff --git a/build/test-results/binary/test/results.bin b/build/test-results/binary/test/results.bin
index b1a548a..adb15b4 100644
Binary files a/build/test-results/binary/test/results.bin and b/build/test-results/binary/test/results.bin differ
diff --git a/build/tmp/jar/MANIFEST.MF b/build/tmp/jar/MANIFEST.MF
index 59499bc..58630c0 100644
--- a/build/tmp/jar/MANIFEST.MF
+++ b/build/tmp/jar/MANIFEST.MF
@@ -1,2 +1,2 @@
-Manifest-Version: 1.0
-
+Manifest-Version: 1.0
+
diff --git a/src/main/java/fr/theshark34/openlauncherlib/Authenticator.java b/src/main/java/fr/theshark34/openlauncherlib/Authenticator.java
index b0abaeb..010cc2c 100644
--- a/src/main/java/fr/theshark34/openlauncherlib/Authenticator.java
+++ b/src/main/java/fr/theshark34/openlauncherlib/Authenticator.java
@@ -53,6 +53,10 @@ public static YggdrasilAuthenticateResponse auth(File gameDir,
 		AuthYggdrasil auth = new AuthYggdrasil(false);
 		YggdrasilAuthenticateResponse rep = auth.authenticate(
 				YggdrasilAgent.AGENT_MINECRAFT, username, password, "");
+		if(rep == null)
+			return null;
+		if(rep.getAccessToken() == null)
+			return rep;
 		File tokenFile = new File(gameDir, "token.txt");
 		tokenFile.getParentFile().mkdirs();
 		try {