diff --git a/.classpath b/.classpath
index afa4751..b70113f 100644
--- a/.classpath
+++ b/.classpath
@@ -1,22 +1,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index 1948207..613e6e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,3 @@
.metadata
-bin/
-/bin_test/
-tmp/
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
.settings/
-.loadpath
-.recommenders
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# Java annotation processor (APT)
-.factorypath
-
-# Code Recommenders
-.recommenders/
-
-# Annotation Processing
-.apt_generated/
-/engine_infos.ser
+/target/
diff --git a/.project b/.project
index dc43f54..62d6163 100644
--- a/.project
+++ b/.project
@@ -10,8 +10,14 @@
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+ org.eclipse.m2e.core.maven2Nature
org.eclipse.jdt.core.javanature
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..62f0411
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,55 @@
+
+ 4.0.0
+
+ dev.kske
+ chess
+ 0.1-beta
+
+ Chess
+ A chess GUI with UCI support written in Java.
+ https://git.kske.dev/kske/chess
+
+
+
+ MIT License
+ http://www.opensource.org/licenses/mit-license.php
+
+
+
+
+
+ kske
+ Kai S. K. Engelbart
+ kai@kske.dev
+ https://kske.dev
+
+ architect
+ developer
+
+ Europe/Berlin
+
+
+
+
+ scm:git:https://git.kske.dev/kske/chess.git
+ scm:git:ssh:git@git.kske.dev:kske/chess.git
+
+
+
+ UTF-8
+ UTF-8
+ 11
+ 11
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.6.2
+ test
+
+
+
\ No newline at end of file
diff --git a/src/dev/kske/chess/board/Bishop.java b/src/main/java/dev/kske/chess/board/Bishop.java
similarity index 100%
rename from src/dev/kske/chess/board/Bishop.java
rename to src/main/java/dev/kske/chess/board/Bishop.java
diff --git a/src/dev/kske/chess/board/Board.java b/src/main/java/dev/kske/chess/board/Board.java
similarity index 100%
rename from src/dev/kske/chess/board/Board.java
rename to src/main/java/dev/kske/chess/board/Board.java
diff --git a/src/dev/kske/chess/board/BoardState.java b/src/main/java/dev/kske/chess/board/BoardState.java
similarity index 100%
rename from src/dev/kske/chess/board/BoardState.java
rename to src/main/java/dev/kske/chess/board/BoardState.java
diff --git a/src/dev/kske/chess/board/Castling.java b/src/main/java/dev/kske/chess/board/Castling.java
similarity index 100%
rename from src/dev/kske/chess/board/Castling.java
rename to src/main/java/dev/kske/chess/board/Castling.java
diff --git a/src/dev/kske/chess/board/EnPassant.java b/src/main/java/dev/kske/chess/board/EnPassant.java
similarity index 100%
rename from src/dev/kske/chess/board/EnPassant.java
rename to src/main/java/dev/kske/chess/board/EnPassant.java
diff --git a/src/dev/kske/chess/board/FENString.java b/src/main/java/dev/kske/chess/board/FENString.java
similarity index 100%
rename from src/dev/kske/chess/board/FENString.java
rename to src/main/java/dev/kske/chess/board/FENString.java
diff --git a/src/dev/kske/chess/board/King.java b/src/main/java/dev/kske/chess/board/King.java
similarity index 100%
rename from src/dev/kske/chess/board/King.java
rename to src/main/java/dev/kske/chess/board/King.java
diff --git a/src/dev/kske/chess/board/Knight.java b/src/main/java/dev/kske/chess/board/Knight.java
similarity index 100%
rename from src/dev/kske/chess/board/Knight.java
rename to src/main/java/dev/kske/chess/board/Knight.java
diff --git a/src/dev/kske/chess/board/Log.java b/src/main/java/dev/kske/chess/board/Log.java
similarity index 100%
rename from src/dev/kske/chess/board/Log.java
rename to src/main/java/dev/kske/chess/board/Log.java
diff --git a/src/dev/kske/chess/board/Move.java b/src/main/java/dev/kske/chess/board/Move.java
similarity index 100%
rename from src/dev/kske/chess/board/Move.java
rename to src/main/java/dev/kske/chess/board/Move.java
diff --git a/src/dev/kske/chess/board/MoveNode.java b/src/main/java/dev/kske/chess/board/MoveNode.java
similarity index 100%
rename from src/dev/kske/chess/board/MoveNode.java
rename to src/main/java/dev/kske/chess/board/MoveNode.java
diff --git a/src/dev/kske/chess/board/Pawn.java b/src/main/java/dev/kske/chess/board/Pawn.java
similarity index 100%
rename from src/dev/kske/chess/board/Pawn.java
rename to src/main/java/dev/kske/chess/board/Pawn.java
diff --git a/src/dev/kske/chess/board/PawnPromotion.java b/src/main/java/dev/kske/chess/board/PawnPromotion.java
similarity index 100%
rename from src/dev/kske/chess/board/PawnPromotion.java
rename to src/main/java/dev/kske/chess/board/PawnPromotion.java
diff --git a/src/dev/kske/chess/board/Piece.java b/src/main/java/dev/kske/chess/board/Piece.java
similarity index 100%
rename from src/dev/kske/chess/board/Piece.java
rename to src/main/java/dev/kske/chess/board/Piece.java
diff --git a/src/dev/kske/chess/board/Position.java b/src/main/java/dev/kske/chess/board/Position.java
similarity index 100%
rename from src/dev/kske/chess/board/Position.java
rename to src/main/java/dev/kske/chess/board/Position.java
diff --git a/src/dev/kske/chess/board/Queen.java b/src/main/java/dev/kske/chess/board/Queen.java
similarity index 100%
rename from src/dev/kske/chess/board/Queen.java
rename to src/main/java/dev/kske/chess/board/Queen.java
diff --git a/src/dev/kske/chess/board/Rook.java b/src/main/java/dev/kske/chess/board/Rook.java
similarity index 100%
rename from src/dev/kske/chess/board/Rook.java
rename to src/main/java/dev/kske/chess/board/Rook.java
diff --git a/src/dev/kske/chess/event/Event.java b/src/main/java/dev/kske/chess/event/Event.java
similarity index 100%
rename from src/dev/kske/chess/event/Event.java
rename to src/main/java/dev/kske/chess/event/Event.java
diff --git a/src/dev/kske/chess/event/EventBus.java b/src/main/java/dev/kske/chess/event/EventBus.java
similarity index 100%
rename from src/dev/kske/chess/event/EventBus.java
rename to src/main/java/dev/kske/chess/event/EventBus.java
diff --git a/src/dev/kske/chess/event/GameStartEvent.java b/src/main/java/dev/kske/chess/event/GameStartEvent.java
similarity index 100%
rename from src/dev/kske/chess/event/GameStartEvent.java
rename to src/main/java/dev/kske/chess/event/GameStartEvent.java
diff --git a/src/dev/kske/chess/event/MoveEvent.java b/src/main/java/dev/kske/chess/event/MoveEvent.java
similarity index 100%
rename from src/dev/kske/chess/event/MoveEvent.java
rename to src/main/java/dev/kske/chess/event/MoveEvent.java
diff --git a/src/dev/kske/chess/event/Subscriber.java b/src/main/java/dev/kske/chess/event/Subscriber.java
similarity index 100%
rename from src/dev/kske/chess/event/Subscriber.java
rename to src/main/java/dev/kske/chess/event/Subscriber.java
diff --git a/src/dev/kske/chess/exception/ChessException.java b/src/main/java/dev/kske/chess/exception/ChessException.java
similarity index 100%
rename from src/dev/kske/chess/exception/ChessException.java
rename to src/main/java/dev/kske/chess/exception/ChessException.java
diff --git a/src/dev/kske/chess/game/Game.java b/src/main/java/dev/kske/chess/game/Game.java
similarity index 100%
rename from src/dev/kske/chess/game/Game.java
rename to src/main/java/dev/kske/chess/game/Game.java
diff --git a/src/dev/kske/chess/game/NaturalPlayer.java b/src/main/java/dev/kske/chess/game/NaturalPlayer.java
similarity index 100%
rename from src/dev/kske/chess/game/NaturalPlayer.java
rename to src/main/java/dev/kske/chess/game/NaturalPlayer.java
diff --git a/src/dev/kske/chess/game/Player.java b/src/main/java/dev/kske/chess/game/Player.java
similarity index 100%
rename from src/dev/kske/chess/game/Player.java
rename to src/main/java/dev/kske/chess/game/Player.java
diff --git a/src/dev/kske/chess/game/UCIPlayer.java b/src/main/java/dev/kske/chess/game/UCIPlayer.java
similarity index 100%
rename from src/dev/kske/chess/game/UCIPlayer.java
rename to src/main/java/dev/kske/chess/game/UCIPlayer.java
diff --git a/src/dev/kske/chess/game/ai/AIPlayer.java b/src/main/java/dev/kske/chess/game/ai/AIPlayer.java
similarity index 100%
rename from src/dev/kske/chess/game/ai/AIPlayer.java
rename to src/main/java/dev/kske/chess/game/ai/AIPlayer.java
diff --git a/src/dev/kske/chess/game/ai/MoveProcessor.java b/src/main/java/dev/kske/chess/game/ai/MoveProcessor.java
similarity index 100%
rename from src/dev/kske/chess/game/ai/MoveProcessor.java
rename to src/main/java/dev/kske/chess/game/ai/MoveProcessor.java
diff --git a/src/dev/kske/chess/game/ai/ProcessingResult.java b/src/main/java/dev/kske/chess/game/ai/ProcessingResult.java
similarity index 100%
rename from src/dev/kske/chess/game/ai/ProcessingResult.java
rename to src/main/java/dev/kske/chess/game/ai/ProcessingResult.java
diff --git a/src/dev/kske/chess/io/EngineUtil.java b/src/main/java/dev/kske/chess/io/EngineUtil.java
similarity index 100%
rename from src/dev/kske/chess/io/EngineUtil.java
rename to src/main/java/dev/kske/chess/io/EngineUtil.java
diff --git a/src/dev/kske/chess/io/TextureUtil.java b/src/main/java/dev/kske/chess/io/TextureUtil.java
similarity index 100%
rename from src/dev/kske/chess/io/TextureUtil.java
rename to src/main/java/dev/kske/chess/io/TextureUtil.java
diff --git a/src/dev/kske/chess/pgn/PGNDatabase.java b/src/main/java/dev/kske/chess/pgn/PGNDatabase.java
similarity index 100%
rename from src/dev/kske/chess/pgn/PGNDatabase.java
rename to src/main/java/dev/kske/chess/pgn/PGNDatabase.java
diff --git a/src/dev/kske/chess/pgn/PGNGame.java b/src/main/java/dev/kske/chess/pgn/PGNGame.java
similarity index 100%
rename from src/dev/kske/chess/pgn/PGNGame.java
rename to src/main/java/dev/kske/chess/pgn/PGNGame.java
diff --git a/src/dev/kske/chess/uci/UCIHandle.java b/src/main/java/dev/kske/chess/uci/UCIHandle.java
similarity index 100%
rename from src/dev/kske/chess/uci/UCIHandle.java
rename to src/main/java/dev/kske/chess/uci/UCIHandle.java
diff --git a/src/dev/kske/chess/uci/UCIInfo.java b/src/main/java/dev/kske/chess/uci/UCIInfo.java
similarity index 100%
rename from src/dev/kske/chess/uci/UCIInfo.java
rename to src/main/java/dev/kske/chess/uci/UCIInfo.java
diff --git a/src/dev/kske/chess/uci/UCIListener.java b/src/main/java/dev/kske/chess/uci/UCIListener.java
similarity index 100%
rename from src/dev/kske/chess/uci/UCIListener.java
rename to src/main/java/dev/kske/chess/uci/UCIListener.java
diff --git a/src/dev/kske/chess/uci/UCIOption.java b/src/main/java/dev/kske/chess/uci/UCIOption.java
similarity index 100%
rename from src/dev/kske/chess/uci/UCIOption.java
rename to src/main/java/dev/kske/chess/uci/UCIOption.java
diff --git a/src/dev/kske/chess/uci/UCIReceiver.java b/src/main/java/dev/kske/chess/uci/UCIReceiver.java
similarity index 100%
rename from src/dev/kske/chess/uci/UCIReceiver.java
rename to src/main/java/dev/kske/chess/uci/UCIReceiver.java
diff --git a/src/dev/kske/chess/ui/BoardComponent.java b/src/main/java/dev/kske/chess/ui/BoardComponent.java
similarity index 100%
rename from src/dev/kske/chess/ui/BoardComponent.java
rename to src/main/java/dev/kske/chess/ui/BoardComponent.java
diff --git a/src/dev/kske/chess/ui/BoardPane.java b/src/main/java/dev/kske/chess/ui/BoardPane.java
similarity index 100%
rename from src/dev/kske/chess/ui/BoardPane.java
rename to src/main/java/dev/kske/chess/ui/BoardPane.java
diff --git a/src/dev/kske/chess/ui/DialogUtil.java b/src/main/java/dev/kske/chess/ui/DialogUtil.java
similarity index 100%
rename from src/dev/kske/chess/ui/DialogUtil.java
rename to src/main/java/dev/kske/chess/ui/DialogUtil.java
diff --git a/src/dev/kske/chess/ui/GameDropTarget.java b/src/main/java/dev/kske/chess/ui/GameDropTarget.java
similarity index 100%
rename from src/dev/kske/chess/ui/GameDropTarget.java
rename to src/main/java/dev/kske/chess/ui/GameDropTarget.java
diff --git a/src/dev/kske/chess/ui/GamePane.java b/src/main/java/dev/kske/chess/ui/GamePane.java
similarity index 100%
rename from src/dev/kske/chess/ui/GamePane.java
rename to src/main/java/dev/kske/chess/ui/GamePane.java
diff --git a/src/dev/kske/chess/ui/GameTabComponent.java b/src/main/java/dev/kske/chess/ui/GameTabComponent.java
similarity index 100%
rename from src/dev/kske/chess/ui/GameTabComponent.java
rename to src/main/java/dev/kske/chess/ui/GameTabComponent.java
diff --git a/src/dev/kske/chess/ui/MainWindow.java b/src/main/java/dev/kske/chess/ui/MainWindow.java
similarity index 100%
rename from src/dev/kske/chess/ui/MainWindow.java
rename to src/main/java/dev/kske/chess/ui/MainWindow.java
diff --git a/src/dev/kske/chess/ui/MenuBar.java b/src/main/java/dev/kske/chess/ui/MenuBar.java
similarity index 100%
rename from src/dev/kske/chess/ui/MenuBar.java
rename to src/main/java/dev/kske/chess/ui/MenuBar.java
diff --git a/src/dev/kske/chess/ui/MoveNodeRenderer.java b/src/main/java/dev/kske/chess/ui/MoveNodeRenderer.java
similarity index 100%
rename from src/dev/kske/chess/ui/MoveNodeRenderer.java
rename to src/main/java/dev/kske/chess/ui/MoveNodeRenderer.java
diff --git a/src/dev/kske/chess/ui/OverlayComponent.java b/src/main/java/dev/kske/chess/ui/OverlayComponent.java
similarity index 100%
rename from src/dev/kske/chess/ui/OverlayComponent.java
rename to src/main/java/dev/kske/chess/ui/OverlayComponent.java
diff --git a/res/pieces/bishop_black.png b/src/main/resources/pieces/bishop_black.png
similarity index 100%
rename from res/pieces/bishop_black.png
rename to src/main/resources/pieces/bishop_black.png
diff --git a/res/pieces/bishop_white.png b/src/main/resources/pieces/bishop_white.png
similarity index 100%
rename from res/pieces/bishop_white.png
rename to src/main/resources/pieces/bishop_white.png
diff --git a/res/pieces/king_black.png b/src/main/resources/pieces/king_black.png
similarity index 100%
rename from res/pieces/king_black.png
rename to src/main/resources/pieces/king_black.png
diff --git a/res/pieces/king_white.png b/src/main/resources/pieces/king_white.png
similarity index 100%
rename from res/pieces/king_white.png
rename to src/main/resources/pieces/king_white.png
diff --git a/res/pieces/knight_black.png b/src/main/resources/pieces/knight_black.png
similarity index 100%
rename from res/pieces/knight_black.png
rename to src/main/resources/pieces/knight_black.png
diff --git a/res/pieces/knight_white.png b/src/main/resources/pieces/knight_white.png
similarity index 100%
rename from res/pieces/knight_white.png
rename to src/main/resources/pieces/knight_white.png
diff --git a/res/pieces/pawn_black.png b/src/main/resources/pieces/pawn_black.png
similarity index 100%
rename from res/pieces/pawn_black.png
rename to src/main/resources/pieces/pawn_black.png
diff --git a/res/pieces/pawn_white.png b/src/main/resources/pieces/pawn_white.png
similarity index 100%
rename from res/pieces/pawn_white.png
rename to src/main/resources/pieces/pawn_white.png
diff --git a/res/pieces/queen_black.png b/src/main/resources/pieces/queen_black.png
similarity index 100%
rename from res/pieces/queen_black.png
rename to src/main/resources/pieces/queen_black.png
diff --git a/res/pieces/queen_white.png b/src/main/resources/pieces/queen_white.png
similarity index 100%
rename from res/pieces/queen_white.png
rename to src/main/resources/pieces/queen_white.png
diff --git a/res/pieces/rook_black.png b/src/main/resources/pieces/rook_black.png
similarity index 100%
rename from res/pieces/rook_black.png
rename to src/main/resources/pieces/rook_black.png
diff --git a/res/pieces/rook_white.png b/src/main/resources/pieces/rook_white.png
similarity index 100%
rename from res/pieces/rook_white.png
rename to src/main/resources/pieces/rook_white.png
diff --git a/test/dev/kske/chess/board/BoardTest.java b/src/test/java/dev/kske/chess/board/BoardTest.java
similarity index 100%
rename from test/dev/kske/chess/board/BoardTest.java
rename to src/test/java/dev/kske/chess/board/BoardTest.java
diff --git a/test/dev/kske/chess/board/FENStringTest.java b/src/test/java/dev/kske/chess/board/FENStringTest.java
similarity index 100%
rename from test/dev/kske/chess/board/FENStringTest.java
rename to src/test/java/dev/kske/chess/board/FENStringTest.java
diff --git a/test/dev/kske/chess/board/LogTest.java b/src/test/java/dev/kske/chess/board/LogTest.java
similarity index 100%
rename from test/dev/kske/chess/board/LogTest.java
rename to src/test/java/dev/kske/chess/board/LogTest.java
diff --git a/test/dev/kske/chess/board/PositionTest.java b/src/test/java/dev/kske/chess/board/PositionTest.java
similarity index 100%
rename from test/dev/kske/chess/board/PositionTest.java
rename to src/test/java/dev/kske/chess/board/PositionTest.java
diff --git a/test/dev/kske/chess/pgn/PGNDatabaseTest.java b/src/test/java/dev/kske/chess/pgn/PGNDatabaseTest.java
similarity index 100%
rename from test/dev/kske/chess/pgn/PGNDatabaseTest.java
rename to src/test/java/dev/kske/chess/pgn/PGNDatabaseTest.java
diff --git a/test_res/test.pgn b/src/test/resources/test.pgn
similarity index 100%
rename from test_res/test.pgn
rename to src/test/resources/test.pgn