diff --git a/.gitignore b/.gitignore
index 159acd26cc95288f99665787def25aca09c8382a..48fc2033aca5d99bacea671248e169edaddfe05c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,146 +1,200 @@
-######################
-# Project Specific
-######################
-/src/main/webapp/content/css/main.css
-/target/classes/static/**
-/src/test/javascript/coverage/
-
-######################
-# Node
-######################
-/node/
-node_tmp/
-node_modules/
-npm-debug.log.*
-/.awcache/*
-/.cache-loader/*
-
-######################
-# SASS
-######################
-.sass-cache/
-
-######################
-# Eclipse
-######################
-*.pydevproject
-.project
+# Created by https://www.toptal.com/developers/gitignore/api/eclipse,intellij,visualstudiocode,java,maven
+# Edit at https://www.toptal.com/developers/gitignore?templates=eclipse,intellij,visualstudiocode,java,maven
+
+### Eclipse ###
 .metadata
+bin/
 tmp/
-tmp/**/*
 *.tmp
 *.bak
 *.swp
 *~.nib
 local.properties
-.classpath
 .settings/
 .loadpath
-.factorypath
-/src/main/resources/rebel.xml
+.recommenders
 
 # External tool builders
-.externalToolBuilders/**
+.externalToolBuilders/
 
 # Locally stored "Eclipse launch configurations"
 *.launch
 
-# CDT-specific
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
 .cproject
 
-# PDT-specific
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
 .buildpath
 
-######################
-# Intellij
-######################
-.idea/
-*.iml
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+### Eclipse Patch ###
+# Eclipse Core
+.project
+
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+# Annotation Processing
+.apt_generated
+
+.sts4-cache/
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
 *.iws
-*.ipr
-*.ids
-*.orig
-classes/
+
+# IntelliJ
 out/
 
-######################
-# Visual Studio Code
-######################
-.vscode/
+# mpeltonen/sbt-idea plugin
+.idea_modules/
 
-######################
-# Maven
-######################
-/log/
-/target/
+# JIRA plugin
+atlassian-ide-plugin.xml
 
-######################
-# Gradle
-######################
-.gradle/
-/build/
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
 
-######################
-# Package Files
-######################
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
 *.jar
 *.war
+*.nar
 *.ear
-*.db
-
-######################
-# Windows
-######################
-# Windows image file caches
-Thumbs.db
-
-# Folder config file
-Desktop.ini
-
-######################
-# Mac OSX
-######################
-.DS_Store
-.svn
-
-# Thumbnails
-._*
-
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
-
-######################
-# Directories
-######################
-/bin/
-/deploy/
-
-######################
-# Logs
-######################
-*.log*
-
-######################
-# Others
-######################
-*.class
-*.*~
-*~
-.merge_file*
-
-######################
-# Gradle Wrapper
-######################
-!gradle/wrapper/gradle-wrapper.jar
-
-######################
-# Maven Wrapper
-######################
-!.mvn/wrapper/maven-wrapper.jar
-
-######################
-# ESLint
-######################
-.eslintcache
-nohup.out
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Maven ###
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+.mvn/wrapper/maven-wrapper.jar
+
+### VisualStudioCode ###
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+.history
+
+# End of https://www.toptal.com/developers/gitignore/api/eclipse,intellij,visualstudiocode,java,maven
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fe1258aa5153c2b2cfd9c25a47e1996243c901de..7c0aa1957a26126c417ff16bf5cb73ae70e66edc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,35 +1,7 @@
-image: maven:latest
+stages:
+  - build
 
-variables:
-  MAVEN_CLI_OPTS: '-s .m2/settings.xml --batch-mode'
-
-cache:
-  paths:
-    - .maven/
-
-before_script:
-  - export MAVEN_USER_HOME=`pwd`/.maven
-
-maven-compile:
-  stage: build
-  script:
-    - ./mvnw $MAVEN_CLI_OPTS compile -Dmaven.repo.local=$MAVEN_USER_HOME
-  artifacts:
-    paths:
-      - target/classes/
-      - target/generated-sources/
-    expire_in: 1 day
-
-maven-test:
-  stage: test
-  script: ./mvnw $MAVEN_CLI_OPTS verify -Dmaven.repo.local=$MAVEN_USER_HOME
-  artifacts:
-    reports:
-      junit: target/test-results/**/TEST-*.xml
-      dependency_scanning: target/dependency-check-report.xml
-    paths:
-      - target/test-results
-      - target/jacoco
-      - target/dependency-check-report.xml
-      - target/dependency-check-report.html
-    expire_in: 1 day
+include:
+  - local: "/.gitlab-common-ci.yml"
+  - local: "/wordWrap/.gitlab-ci.yml"
+  - local: "/romanNumerals/.gitlab-ci.yml"
diff --git a/.gitlab-common-ci.yml b/.gitlab-common-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d2d594226e4188e913986ee39013f0d910074cbf
--- /dev/null
+++ b/.gitlab-common-ci.yml
@@ -0,0 +1,12 @@
+variables:
+  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
+  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
+
+cache:
+  paths:
+    - .m2/repository
+
+.java:
+  image: maven:3.6.3-jdk-14
+  tags: docker
+  coverage: '/Total.*?([0-9]{1,3})%/'
diff --git a/.m2/settings.xml b/.m2/settings.xml
deleted file mode 100644
index bceee5fd9af9df15624a3261d69daecf72728f73..0000000000000000000000000000000000000000
--- a/.m2/settings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-    <pluginGroups/>
-    <proxies/>
-    <servers/>
-    <mirrors/>
-    <profiles/>
-</settings>
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index b901097f2db6e50097dc0b222204a88f8cea1609..0000000000000000000000000000000000000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
-    private static final String WRAPPER_VERSION = "0.5.6";
-    /**
-     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
-     */
-    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
-        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
-    /**
-     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
-     * use instead of the default one.
-     */
-    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
-            ".mvn/wrapper/maven-wrapper.properties";
-
-    /**
-     * Path where the maven-wrapper.jar will be saved to.
-     */
-    private static final String MAVEN_WRAPPER_JAR_PATH =
-            ".mvn/wrapper/maven-wrapper.jar";
-
-    /**
-     * Name of the property which should be used to override the default download url for the wrapper.
-     */
-    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
-    public static void main(String args[]) {
-        System.out.println("- Downloader started");
-        File baseDirectory = new File(args[0]);
-        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
-        // If the maven-wrapper.properties exists, read it and check if it contains a custom
-        // wrapperUrl parameter.
-        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
-        String url = DEFAULT_DOWNLOAD_URL;
-        if(mavenWrapperPropertyFile.exists()) {
-            FileInputStream mavenWrapperPropertyFileInputStream = null;
-            try {
-                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
-                Properties mavenWrapperProperties = new Properties();
-                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
-                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
-            } catch (IOException e) {
-                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
-            } finally {
-                try {
-                    if(mavenWrapperPropertyFileInputStream != null) {
-                        mavenWrapperPropertyFileInputStream.close();
-                    }
-                } catch (IOException e) {
-                    // Ignore ...
-                }
-            }
-        }
-        System.out.println("- Downloading from: " + url);
-
-        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
-        if(!outputFile.getParentFile().exists()) {
-            if(!outputFile.getParentFile().mkdirs()) {
-                System.out.println(
-                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
-            }
-        }
-        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
-        try {
-            downloadFileFromURL(url, outputFile);
-            System.out.println("Done");
-            System.exit(0);
-        } catch (Throwable e) {
-            System.out.println("- Error downloading");
-            e.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
-        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
-            String username = System.getenv("MVNW_USERNAME");
-            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
-            Authenticator.setDefault(new Authenticator() {
-                @Override
-                protected PasswordAuthentication getPasswordAuthentication() {
-                    return new PasswordAuthentication(username, password);
-                }
-            });
-        }
-        URL website = new URL(urlString);
-        ReadableByteChannel rbc;
-        rbc = Channels.newChannel(website.openStream());
-        FileOutputStream fos = new FileOutputStream(destination);
-        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
-        fos.close();
-        rbc.close();
-    }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054..0000000000000000000000000000000000000000
Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index 642d572ce90e5085986bdd9c9204b9404f028084..0000000000000000000000000000000000000000
--- a/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/kata/romanNumerals/pom.xml b/kata/romanNumerals/pom.xml
deleted file mode 100644
index 558723b04af8b1583b58b29276f01a190e8c89ad..0000000000000000000000000000000000000000
--- a/kata/romanNumerals/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>fr.ippon.live-coding</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../</relativePath>
-    </parent>
-    <groupId>fr.ippon.kata</groupId>
-    <artifactId>romanNumerals</artifactId>
-
-    <name>Roman Numerals Kata</name>
-
-    <developers>
-        <developer>
-            <email>cdamon@ippon.tech</email>
-            <name>Colin DAMON</name>
-        </developer>
-        <developer>
-            <email></email>
-            <name>Julie </name>
-        </developer>
-    </developers>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java b/kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java
deleted file mode 100644
index 127971794357f0ea3471de2d7635a540d9ed4655..0000000000000000000000000000000000000000
--- a/kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package fr.ippon.kata.roman;
-
-import java.util.NavigableMap;
-import java.util.TreeMap;
-
-public class Numerals {
-
-    private static final NavigableMap<Integer, Roman> CONVERSIONS = buildConversions();
-
-
-    public static String toRoman(int arabic) {
-
-        // TODO : Use Stream.iterable to avoid stackoverflow on recursion
-        if (arabic <= 0) {
-            return "";
-        }
-
-        Integer highestKnownConversion = CONVERSIONS.floorKey(arabic);
-
-        String highestKnownRepresentation = CONVERSIONS
-                .get(highestKnownConversion)
-                .getRepresentation();
-
-        return highestKnownRepresentation + toRoman(arabic - highestKnownConversion);
-    }
-
-    private static NavigableMap<Integer, Roman> buildConversions() {
-        NavigableMap<Integer, Roman> conversions = new TreeMap<>();
-        conversions.put(1, Roman.ONE);
-        conversions.put(4, Roman.FOUR);
-        conversions.put(5, Roman.FIVE);
-        conversions.put(9, Roman.NINE);
-        conversions.put(10, Roman.TEN);
-
-        return conversions;
-
-    }
-}
diff --git a/kata/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java b/kata/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java
deleted file mode 100644
index ad8abc13fce8ed968a0825f12b45bab719ac285a..0000000000000000000000000000000000000000
--- a/kata/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package fr.ippon.kata.roman;
-
-import org.junit.jupiter.api.Test;
-
-import static fr.ippon.kata.roman.Numerals.toRoman;
-import static org.assertj.core.api.Assertions.*;
-
-class NumeralsTest {
-
-    @Test
-    void shouldConvertZeroToEmptyString() {
-        assertThat(toRoman(0)).isEmpty();
-    }
-
-    @Test
-    void shouldConvertOneToI() {
-        assertThat(toRoman(1)).isEqualTo("I");
-    }
-
-    @Test
-    void shouldConvertThreeToIII() {
-        assertThat(toRoman(3)).isEqualTo("III");
-    }
-
-    @Test
-    void shouldConvertFourToIV() {
-        assertThat(toRoman(4)).isEqualTo("IV");
-    }
-
-    @Test
-    void shouldConvertFiveToV() {
-        assertThat(toRoman(5)).isEqualTo("V");
-    }
-
-    @Test
-    void shouldConvertSixToVI() {
-        assertThat(toRoman(6)).isEqualTo("VI");
-    }
-
-    @Test
-    void shouldConvertNineToIX() {
-        assertThat(toRoman(9)).isEqualTo("IX");
-    }
-
-    @Test
-    void shouldConvertTenToTen() {
-        assertThat(toRoman(10)).isEqualTo("X");
-    }
-
-    @Test
-    void shouldConvertFourteenToXIV() {
-        assertThat(toRoman(14)).isEqualTo("XIV");
-    }
-
-
-
-}
\ No newline at end of file
diff --git a/kata/wrapper/pom.xml b/kata/wrapper/pom.xml
deleted file mode 100644
index 9c5d1fd7c7b43a501b9693b19da964dd45253886..0000000000000000000000000000000000000000
--- a/kata/wrapper/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>fr.ippon.live-coding</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../</relativePath>
-    </parent>
-    <groupId>fr.ippon.kata</groupId>
-    <artifactId>wrapper</artifactId>
-
-    <name>Wrapper Kata</name>
-
-    <developers>
-        <developer>
-            <email>cdamon@ippon.tech</email>
-            <name>Colin DAMON</name>
-        </developer>
-
-    </developers>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/kata/wrapper/src/main/java/fr/ippon/kata/wrapper/Wrapper.java b/kata/wrapper/src/main/java/fr/ippon/kata/wrapper/Wrapper.java
deleted file mode 100644
index cd263a4d339c596c0b93ad3b5fafd04d99b12573..0000000000000000000000000000000000000000
--- a/kata/wrapper/src/main/java/fr/ippon/kata/wrapper/Wrapper.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package fr.ippon.kata.wrapper;
-
-public class Wrapper {
-
-    private static final String BREAK = "\n";
-    private int columns;
-
-    private Wrapper(int columns) {
-        this.columns = columns;
-    }
-
-    public static String wrap(String sentence, int columns) {
-        return new Wrapper(columns).wrap(sentence);
-    }
-
-    private String wrap(String sentence) {
-        if (isShortEnough(sentence)) {
-            return sentence;
-        }
-
-        String left = sentence.substring(0, columns);
-        String right = sentence.substring(columns);
-
-        if (right.startsWith(" ")) {
-            return join(left, right.substring(1, right.length()));
-        }
-
-        if (left.contains(" ")) {
-            int spaceIndex = left.lastIndexOf(" ");
-            return join(sentence.substring(0, spaceIndex),
-                    sentence.substring(spaceIndex + 1));
-        }
-
-        return join(left, right);
-    }
-
-    private boolean isShortEnough(String sentence){
-        return sentence == null  || sentence.length() <= columns;
-    }
-
-    private String join(String left, String right){
-        return left + BREAK + wrap(right,columns);
-    }
-}
diff --git a/kata/wrapper/src/test/java/wrapper/WrapperTest.java b/kata/wrapper/src/test/java/wrapper/WrapperTest.java
deleted file mode 100644
index 47b3e172bb942ad723fb4020b8767d88eff8ba24..0000000000000000000000000000000000000000
--- a/kata/wrapper/src/test/java/wrapper/WrapperTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package wrapper;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-import static fr.ippon.kata.wrapper.Wrapper.wrap;
-import static org.assertj.core.api.Assertions.*;
-
-class WrapperTest {
-
-    @Test
-    void shouldNotWrapWithoutSentence(){
-        assertThat(wrap(null,4)).isNull();
-    }
-
-    @Test
-    void shouldNotWrapShortEnoughSentence(){
-        assertThat(wrap("Once",4)).isEqualTo("Once");
-    }
-
-    @Test
-    void shouldWrapBySplittingWord(){
-        assertThat(wrap("Once",2)).isEqualTo("On\nce");
-    }
-
-    @Test
-    void shouldWrapBySplittingWordMultipleItems(){
-        assertThat(wrap("Once",1))
-                .isEqualTo(join("O","n","c","e"));
-    }
-
-    @Test
-    void shouldWrapAfterWord(){
-        assertThat(wrap("Once uppon a time",10))
-                .isEqualTo(join("Once uppon","a time"));
-    }
-
-    private static String join (String... parts){
-        return Arrays.stream(parts)
-                .collect(Collectors.joining("\n"));
-    }
-
-}
\ No newline at end of file
diff --git a/mvnw b/mvnw
deleted file mode 100755
index 41c0f0c23db5dca836d3db1a17a7a28444d17d74..0000000000000000000000000000000000000000
--- a/mvnw
+++ /dev/null
@@ -1,310 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   M2_HOME - location of maven2's installed home dir
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        export JAVA_HOME="`/usr/libexec/java_home`"
-      else
-        export JAVA_HOME="/Library/Java/Home"
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=`java-config --jre-home`
-  fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
-  ## resolve links - $0 may be a link to maven's home
-  PRG="$0"
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-      PRG="$link"
-    else
-      PRG="`dirname "$PRG"`/$link"
-    fi
-  done
-
-  saveddir=`pwd`
-
-  M2_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  M2_HOME=`cd "$M2_HOME" && pwd`
-
-  cd "$saveddir"
-  # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --unix "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME="`(cd "$M2_HOME"; pwd)`"
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="`which javac`"
-  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=`which readlink`
-    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
-      if $darwin ; then
-        javaHome="`dirname \"$javaExecutable\"`"
-        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
-      else
-        javaExecutable="`readlink -f \"$javaExecutable\"`"
-      fi
-      javaHome="`dirname \"$javaExecutable\"`"
-      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="`which java`"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=`cd "$wdir/.."; pwd`
-    fi
-    # end of workaround
-  done
-  echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    echo "$(tr -s '\n' ' ' < "$1")"
-  fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Found .mvn/wrapper/maven-wrapper.jar"
-    fi
-else
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
-    fi
-    if [ -n "$MVNW_REPOURL" ]; then
-      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    else
-      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    fi
-    while IFS="=" read key value; do
-      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
-      esac
-    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
-    if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Downloading from: $jarUrl"
-    fi
-    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
-    if $cygwin; then
-      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
-    fi
-
-    if command -v wget > /dev/null; then
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Found wget ... using wget"
-        fi
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget "$jarUrl" -O "$wrapperJarPath"
-        else
-            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
-        fi
-    elif command -v curl > /dev/null; then
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Found curl ... using curl"
-        fi
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl -o "$wrapperJarPath" "$jarUrl" -f
-        else
-            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
-        fi
-
-    else
-        if [ "$MVNW_VERBOSE" = true ]; then
-          echo "Falling back to using Java to download"
-        fi
-        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
-        # For Cygwin, switch paths to Windows format before running javac
-        if $cygwin; then
-          javaClass=`cygpath --path --windows "$javaClass"`
-        fi
-        if [ -e "$javaClass" ]; then
-            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
-                if [ "$MVNW_VERBOSE" = true ]; then
-                  echo " - Compiling MavenWrapperDownloader.java ..."
-                fi
-                # Compiling the Java class
-                ("$JAVA_HOME/bin/javac" "$javaClass")
-            fi
-            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
-                # Running the downloader
-                if [ "$MVNW_VERBOSE" = true ]; then
-                  echo " - Running MavenWrapperDownloader.java ..."
-                fi
-                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
-            fi
-        fi
-    fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
-  echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --path --windows "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
deleted file mode 100644
index 86115719e5383e94597f918bf18c5ecbb7cfe492..0000000000000000000000000000000000000000
--- a/mvnw.cmd
+++ /dev/null
@@ -1,182 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Found %WRAPPER_JAR%
-    )
-) else (
-    if not "%MVNW_REPOURL%" == "" (
-        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-    )
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Couldn't find %WRAPPER_JAR%, downloading it ...
-        echo Downloading from: %DOWNLOAD_URL%
-    )
-
-    powershell -Command "&{"^
-		"$webclient = new-object System.Net.WebClient;"^
-		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
-		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
-		"}"^
-		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
-		"}"
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Finished downloading %WRAPPER_JAR%
-    )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index c30c8c2e272a47fa8c550e453c321b723810beaf..0000000000000000000000000000000000000000
--- a/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>fr.ippon.live-coding</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <name>Ippon Live Coding Parent</name>
-    <description>Ippon Technologies propose des sessions live sur twitch.</description>
-    <packaging>pom</packaging>
-    <url>https://www.twitch.tv/ippontech</url>
-    <organization>
-        <name>Ippon Technologies</name>
-        <url>http://www.ippon.fr</url>
-    </organization>
-    <licenses>
-        <license>
-            <name>Apache License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
-            <distribution>repo</distribution>
-        </license>
-    </licenses>
-
-    <modules>
-        <module>kata/wrapper</module>
-        <module>kata/romanNumerals</module>
-    </modules>
-
-    <properties>
-        <java.version>14</java.version>
-        <maven.compiler.source>${java.version}</maven.compiler.source>
-        <maven.compiler.target>${java.version}</maven.compiler.target>
-
-        <maven.surefire.version>2.22.2</maven.surefire.version>
-        <maven.failsafe.version>2.22.2</maven.failsafe.version>
-
-        <junit.jupiter.version>5.6.2</junit.jupiter.version>
-        <mockito.version>3.4.0</mockito.version>
-        <assertj.version>3.11.1</assertj.version>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.mockito</groupId>
-                <artifactId>mockito-junit-jupiter</artifactId>
-                <version>${mockito.version}</version>
-                <scope>test</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.junit.jupiter</groupId>
-                <artifactId>junit-jupiter-api</artifactId>
-                <version>${junit.jupiter.version}</version>
-                <scope>test</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.junit.jupiter</groupId>
-                <artifactId>junit-jupiter-engine</artifactId>
-                <version>${junit.jupiter.version}</version>
-                <scope>test</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.assertj</groupId>
-                <artifactId>assertj-core</artifactId>
-                <version>${assertj.version}</version>
-                <scope>test</scope>
-            </dependency>
-
-        </dependencies>
-    </dependencyManagement>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>${maven.surefire.version}</version>
-            </plugin>
-            <plugin>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <version>${maven.failsafe.version}</version>
-            </plugin>
-        </plugins>
-    </build>
-
-
-</project>
\ No newline at end of file
diff --git a/romanNumerals/.gitignore b/romanNumerals/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b83d22266ac8aa2f8df2edef68082c789727841d
--- /dev/null
+++ b/romanNumerals/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/romanNumerals/.gitlab-ci.yml b/romanNumerals/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..23919fbd73285fc2ac2c3e9e9357b8a900a810fa
--- /dev/null
+++ b/romanNumerals/.gitlab-ci.yml
@@ -0,0 +1,24 @@
+stages:
+  - build
+  
+package-roman-numerals:
+  extends: .java
+  stage: build
+  tags:
+    - docker
+  script:
+    - cd romanNumerals
+    - mvn $MAVEN_CLI_OPTS clean package
+    - cat target/site/jacoco/index.html
+  artifacts:
+    reports:
+      junit: romanNumerals/target/surefire-reports/TEST-*.xml
+    expire_in: 1 day
+  only:
+    refs:
+      - master
+      - merge_requests
+    changes:
+      - ".gitlab-ci.yml"
+      - ".gitlab-common-ci.yml"
+      - "romanNumerals/**/*"
diff --git a/kata/romanNumerals/README.md b/romanNumerals/README.md
similarity index 100%
rename from kata/romanNumerals/README.md
rename to romanNumerals/README.md
diff --git a/romanNumerals/pom.xml b/romanNumerals/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3766ae1feb69932ddd0ad91f6d9a0ce58d53b72
--- /dev/null
+++ b/romanNumerals/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <version>1.0.0-SNAPSHOT</version>
+  <groupId>fr.ippon.kata</groupId>
+  <artifactId>roman-numerals</artifactId>
+
+  <name>RomanNumerals</name>
+
+  <properties>
+    <java.version>14</java.version>
+
+    <junit.version>5.7.0-M1</junit.version>
+    <assertj.version>3.16.1</assertj.version>
+    <mockito.version>3.1.0</mockito.version>
+
+    <surefire-plugin.version>3.0.0-M4</surefire-plugin.version>
+    <compiler-plugin.version>3.8.1</compiler-plugin.version>
+    <jacoco.version>0.8.5</jacoco.version>
+  </properties>
+
+  <developers>
+    <developer>
+      <email>cdamon@ippon.fr</email>
+      <name>Colin DAMON</name>
+    </developer>
+    <developer>
+      <email>jconte@ippon.fr</email>
+      <name>Julie CONTE</name>
+    </developer>
+  </developers>
+
+
+  <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <version>${junit.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-junit-jupiter</artifactId>
+      <version>${mockito.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire-plugin.version}</version>
+      </plugin>
+
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${compiler-plugin.version}</version>
+        <configuration>
+          <source>${java.version}</source>
+          <target>${java.version}</target>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <version>${jacoco.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>report</id>
+            <phase>test</phase>
+            <goals>
+              <goal>report</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java b/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java
new file mode 100644
index 0000000000000000000000000000000000000000..648e22af4d9b6831c1d0f4e90dc49fcad361d8a0
--- /dev/null
+++ b/romanNumerals/src/main/java/fr/ippon/kata/roman/Numerals.java
@@ -0,0 +1,39 @@
+package fr.ippon.kata.roman;
+
+import java.util.NavigableMap;
+import java.util.TreeMap;
+
+public final class Numerals {
+
+  private static final NavigableMap<Integer, Roman> CONVERSIONS = buildConversions();
+
+  private Numerals() {
+  }
+
+  public static String toRoman(int arabic) {
+    if (arabic <= 0) {
+      return "";
+    }
+
+    Integer highestKnownConversion = CONVERSIONS.floorKey(arabic);
+
+    String highestKnownRepresentation = CONVERSIONS.get(highestKnownConversion)
+        .getRepresentation();
+
+    return highestKnownRepresentation
+        + toRoman(arabic - highestKnownConversion);
+  }
+
+  private static NavigableMap<Integer, Roman> buildConversions() {
+    NavigableMap<Integer, Roman> conversions = new TreeMap<>();
+
+    conversions.put(1, Roman.ONE);
+    conversions.put(4, Roman.FOUR);
+    conversions.put(5, Roman.FIVE);
+    conversions.put(9, Roman.NINE);
+    conversions.put(10, Roman.TEN);
+
+    return conversions;
+
+  }
+}
diff --git a/kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java b/romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java
similarity index 91%
rename from kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java
rename to romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java
index b831d68f51c23839c152f27ec4599cb82cbe608d..8dcd86fff54bf312a1e9cdf16fc2b5756df405ea 100644
--- a/kata/romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java
+++ b/romanNumerals/src/main/java/fr/ippon/kata/roman/Roman.java
@@ -1,7 +1,5 @@
 package fr.ippon.kata.roman;
 
-import java.util.NavigableMap;
-
 public enum Roman {
     ONE("I"),
     FOUR("IV"),
diff --git a/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java b/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b07fc90ada08642a91468967a8f69e78dc296bf1
--- /dev/null
+++ b/romanNumerals/src/test/java/fr/ippon/kata/roman/NumeralsTest.java
@@ -0,0 +1,55 @@
+package fr.ippon.kata.roman;
+
+import org.junit.jupiter.api.Test;
+
+import static fr.ippon.kata.roman.Numerals.toRoman;
+import static org.assertj.core.api.Assertions.*;
+
+class NumeralsTest {
+
+  @Test
+  void shouldConvertZeroToEmptyString() {
+    assertThat(toRoman(0)).isEmpty();
+  }
+
+  @Test
+  void shouldConvertOneToI() {
+    assertThat(toRoman(1)).isEqualTo("I");
+  }
+
+  @Test
+  void shouldConvertThreeToIII() {
+    assertThat(toRoman(3)).isEqualTo("III");
+  }
+
+  @Test
+  void shouldConvertFourToIV() {
+    assertThat(toRoman(4)).isEqualTo("IV");
+  }
+
+  @Test
+  void shouldConvertFiveToV() {
+    assertThat(toRoman(5)).isEqualTo("V");
+  }
+
+  @Test
+  void shouldConvertSixToVI() {
+    assertThat(toRoman(6)).isEqualTo("VI");
+  }
+
+  @Test
+  void shouldConvertNineToIX() {
+    assertThat(toRoman(9)).isEqualTo("IX");
+  }
+
+  @Test
+  void shouldConvertTenToX() {
+    assertThat(toRoman(10)).isEqualTo("X");
+  }
+
+  @Test
+  void shouldConvertFourteenToXIV() {
+    assertThat(toRoman(14)).isEqualTo("XIV");
+  }
+
+}
\ No newline at end of file
diff --git a/wordWrap/.gitignore b/wordWrap/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b83d22266ac8aa2f8df2edef68082c789727841d
--- /dev/null
+++ b/wordWrap/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/wordWrap/.gitlab-ci.yml b/wordWrap/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..54e0b17d2a038702fa728008269b34572e9dae82
--- /dev/null
+++ b/wordWrap/.gitlab-ci.yml
@@ -0,0 +1,24 @@
+stages:
+  - build
+  
+package-word-wrap:
+  extends: .java
+  stage: build
+  tags:
+    - docker
+  script:
+    - cd wordWrap
+    - mvn $MAVEN_CLI_OPTS clean package
+    - cat target/site/jacoco/index.html
+  artifacts:
+    reports:
+      junit: wordWrap/target/surefire-reports/TEST-*.xml
+    expire_in: 1 day
+  only:
+    refs:
+      - master
+      - merge_requests
+    changes:
+      - ".gitlab-ci.yml"
+      - ".gitlab-common-ci.yml"
+      - "wordWrap/**/*"
diff --git a/kata/wrapper/README.md b/wordWrap/README.md
similarity index 100%
rename from kata/wrapper/README.md
rename to wordWrap/README.md
diff --git a/wordWrap/pom.xml b/wordWrap/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3034cd89e00db3bbd077eafb0d12cc446696f75
--- /dev/null
+++ b/wordWrap/pom.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <version>1.0.0-SNAPSHOT</version>
+  <groupId>fr.ippon.kata</groupId>
+  <artifactId>word-wrap</artifactId>
+
+  <name>WordWrap</name>
+
+  <properties>
+    <java.version>14</java.version>
+
+    <junit.version>5.7.0-M1</junit.version>
+    <assertj.version>3.16.1</assertj.version>
+    <mockito.version>3.1.0</mockito.version>
+
+    <surefire-plugin.version>3.0.0-M4</surefire-plugin.version>
+    <compiler-plugin.version>3.8.1</compiler-plugin.version>
+    <jacoco.version>0.8.5</jacoco.version>
+  </properties>
+
+  <developers>
+    <developer>
+      <email>cdamon@ippon.fr</email>
+      <name>Colin DAMON</name>
+    </developer>
+  </developers>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <version>${junit.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-junit-jupiter</artifactId>
+      <version>${mockito.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire-plugin.version}</version>
+      </plugin>
+
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${compiler-plugin.version}</version>
+        <configuration>
+          <source>${java.version}</source>
+          <target>${java.version}</target>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <version>${jacoco.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>report</id>
+            <phase>test</phase>
+            <goals>
+              <goal>report</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/wordWrap/src/main/java/fr/ippon/kata/wrapper/Wrapper.java b/wordWrap/src/main/java/fr/ippon/kata/wrapper/Wrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5422af0aceb3703377dd91d36bb663410f4aac97
--- /dev/null
+++ b/wordWrap/src/main/java/fr/ippon/kata/wrapper/Wrapper.java
@@ -0,0 +1,45 @@
+package fr.ippon.kata.wrapper;
+
+public class Wrapper {
+
+  private static final String SPACE = " ";
+  private static final String BREAK = "\n";
+  private int columns;
+
+  private Wrapper(int columns) {
+    this.columns = columns;
+  }
+
+  public static String wrap(String sentence, int columns) {
+    return new Wrapper(columns).wrap(sentence);
+  }
+
+  private String wrap(String sentence) {
+    if (isShortEnough(sentence)) {
+      return sentence;
+    }
+
+    String left = sentence.substring(0, columns);
+    String right = sentence.substring(columns);
+
+    if (right.startsWith(SPACE)) {
+      return join(left, right.substring(1, right.length()));
+    }
+
+    int spaceIndex = left.lastIndexOf(SPACE);
+    if (spaceIndex != -1) {
+      return join(sentence.substring(0, spaceIndex),
+          sentence.substring(spaceIndex + 1));
+    }
+
+    return join(left, right);
+  }
+
+  private boolean isShortEnough(String sentence) {
+    return sentence == null || sentence.length() <= columns;
+  }
+
+  private String join(String left, String right) {
+    return left + BREAK + wrap(right, columns);
+  }
+}
diff --git a/wordWrap/src/test/java/fr/ippon/kata/wrapper/WrapperTest.java b/wordWrap/src/test/java/fr/ippon/kata/wrapper/WrapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0db6b1b8889d62c0e830816490d69ff22a45fccb
--- /dev/null
+++ b/wordWrap/src/test/java/fr/ippon/kata/wrapper/WrapperTest.java
@@ -0,0 +1,49 @@
+package fr.ippon.kata.wrapper;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import static fr.ippon.kata.wrapper.Wrapper.wrap;
+import static org.assertj.core.api.Assertions.*;
+
+class WrapperTest {
+
+  @Test
+  void shouldNotWrapWithoutSentence() {
+    assertThat(wrap(null, 4)).isNull();
+  }
+
+  @Test
+  void shouldNotWrapShortEnoughSentence() {
+    assertThat(wrap("Once", 4)).isEqualTo("Once");
+  }
+
+  @Test
+  void shouldWrapBySplittingWord() {
+    assertThat(wrap("Once", 2)).isEqualTo("On\nce");
+  }
+
+  @Test
+  void shouldWrapBySplittingWordMultipleItems() {
+    assertThat(wrap("Once", 1)).isEqualTo(join("O", "n", "c", "e"));
+  }
+
+  @Test
+  void shouldWrapAfterWord() {
+    assertThat(wrap("Once upon a time", 9))
+        .isEqualTo(join("Once upon", "a time"));
+  }
+
+  @Test
+  void shouldWrapBetweenWords() {
+    assertThat(wrap("Once upon a time in Hollywood", 13))
+        .isEqualTo(join("Once upon a", "time in", "Hollywood"));
+  }
+
+  private static String join(String... parts) {
+    return Arrays.stream(parts).collect(Collectors.joining("\n"));
+  }
+
+}
\ No newline at end of file