[longomatch/refactor1] "Small" refactoring



commit 35ca6505cdd44fce00b000b431cb21b4e53c3ff9
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Tue Nov 1 22:57:08 2011 +0100

    "Small" refactoring
    
    Split in:
    LongoMatch.Core
    LongoMatch.Gui
    LongoMatch.Gui.Multimedia
    LongoMatch.Multimedia
    LongoMatch.Services
    
    And clean up various parts of the code trying to split the GUI side from
    the core

 CesarPlayer/CesarPlayer.mdp                        |   82 ---
 CesarPlayer/Makefile.am                            |   54 --
 {LongoMatch => LongoMatch.Core}/Common/Cairo.cs    |    0
 .../Common/CaptureSettings.cs                      |    3 +-
 {LongoMatch => LongoMatch.Core}/Common/Cloner.cs   |    0
 .../Common/ConsoleCrayon.cs                        |    0
 .../Common/Constants.cs                            |    3 +-
 .../Common/Device.cs                               |   45 +-
 .../Common/EncodingProfiles.cs                     |    2 +-
 .../Common/EncodingSettings.cs                     |    2 +-
 {LongoMatch => LongoMatch.Core}/Common/Enums.cs    |   50 ++
 {LongoMatch => LongoMatch.Core}/Common/Images.cs   |    0
 .../JobsManager => LongoMatch.Core/Common}/Job.cs  |    6 +-
 {LongoMatch => LongoMatch.Core}/Common/Log.cs      |    0
 .../Common}/PlayList.cs                            |   28 +-
 .../Common/SerializableObject.cs                   |    0
 .../Common/VideoStandards.cs                       |    2 +-
 LongoMatch.Core/Config.cs                          |   67 ++
 .../Handlers/Handlers.cs                           |  107 ++--
 .../Interfaces/IDatabase.cs                        |   16 +-
 .../Interfaces}/IPlayList.cs                       |    8 +-
 .../Interfaces/IPlaylistWidget.cs                  |   17 +-
 .../Interfaces/IRenderingJobsManager.cs            |   23 +-
 .../Interfaces/ISubCategory.cs                     |    0
 {LongoMatch => LongoMatch.Core}/Interfaces/ITag.cs |    0
 .../Interfaces/ITemplates.cs                       |    0
 .../Interfaces/ITemplatesService.cs                |   19 +-
 LongoMatch.Core/LongoMatch.Core.mdp                |   83 +++
 LongoMatch.Core/Makefile.am                        |   54 ++
 {LongoMatch => LongoMatch.Core}/Store/Category.cs  |    0
 {LongoMatch => LongoMatch.Core}/Store/Drawing.cs   |    0
 {LongoMatch => LongoMatch.Core}/Store/HotKey.cs    |    1 -
 .../Utils => LongoMatch.Core/Store}/MediaFile.cs   |   70 +--
 .../Store/PixbufTimeNode.cs                        |    0
 {LongoMatch => LongoMatch.Core}/Store/Play.cs      |    0
 .../Store/PlayListPlay.cs                          |   13 +-
 {LongoMatch => LongoMatch.Core}/Store/Player.cs    |    0
 {LongoMatch => LongoMatch.Core}/Store/Project.cs   |    0
 .../Store/ProjectDescription.cs                    |    3 +-
 .../Store/SubCategory.cs                           |    0
 {LongoMatch => LongoMatch.Core}/Store/Tag.cs       |    0
 {LongoMatch => LongoMatch.Core}/Store/TagStore.cs  |    0
 .../Store/Templates/CategoriesTemplate.cs          |    0
 .../Store/Templates/SubCategoryTemplate.cs         |    0
 .../Store/Templates/TeamTemplate.cs                |    0
 .../Store/Templates/Template.cs                    |    0
 {LongoMatch => LongoMatch.Core}/Store/Time.cs      |    0
 {LongoMatch => LongoMatch.Core}/Store/TimeNode.cs  |   10 +
 .../AssemblyInfo.cs                                |    2 +-
 .../AssemblyInfo.cs.in                             |    0
 .../CesarPlayer.csproj                             |    0
 .../CesarPlayer.dll.config.in                      |    0
 .../Gui/CapturerBin.cs                             |    5 +-
 .../Gui/PlayerBin.cs                               |    1 +
 .../Gui/VolumeWindow.cs                            |    0
 .../LongoMatch.GUI.Multimedia.mdp                  |   49 ++
 .../LongoMatch.Gui.Multimedia.dll.config           |    3 +
 LongoMatch.GUI.Multimedia/Makefile.am              |   23 +
 LongoMatch.GUI.Multimedia/a.dll                    |  Bin 0 -> 110080 bytes
 LongoMatch.GUI.Multimedia/a.dll.mdb                |  Bin 0 -> 32860 bytes
 .../cesarplayer.key                                |  Bin 596 -> 596 bytes
 .../cesarplayer.pc                                 |    2 +-
 .../cesarplayer.pc.in                              |    0
 .../gtk-gui/LongoMatch.Gui.CapturerBin.cs          |   34 +-
 .../gtk-gui/LongoMatch.Gui.PlayerBin.cs            |   64 +-
 .../gtk-gui/LongoMatch.Gui.VolumeWindow.cs         |   11 +-
 .../gtk-gui/generated.cs                           |   27 +-
 .../gtk-gui/gui.stetic                             |    4 +-
 .../gtk-gui/objects.xml                            |    2 +-
 .../Gui/Component/ButtonsWidget.cs                 |    6 +-
 .../Gui/Component/CategoriesScale.cs               |    0
 .../Gui/Component/CategoriesTemplateEditor.cs      |    9 +-
 .../Gui/Component/CategoryProperties.cs            |   20 +-
 .../Gui/Component/DrawingToolBox.cs                |    1 +
 .../Gui/Component/DrawingWidget.cs                 |   13 +-
 .../Gui/Component/NotesWidget.cs                   |    0
 LongoMatch.GUI/Gui/Component/PlayListWidget.cs     |  123 ++++
 .../Gui/Component/PlayerProperties.cs              |    0
 .../Gui/Component/PlayersListTreeWidget.cs         |    2 +-
 .../Gui/Component/PlayersTaggerWidget.cs           |    0
 .../Gui/Component/PlaysListTreeWidget.cs           |   12 +-
 .../Gui/Component/ProjectDetailsWidget.cs          |   69 +-
 .../Gui/Component/ProjectListWidget.cs             |    2 -
 .../Gui/Component/RenderingStateBar.cs             |    0
 .../Gui/Component/StringTaggerWidget.cs            |    0
 .../Gui/Component/TaggerWidget.cs                  |    0
 .../Gui/Component/TagsTreeWidget.cs                |    3 +-
 .../Gui/Component/TeamTaggerWidget.cs              |    8 +-
 .../Gui/Component/TeamTemplateEditor.cs            |    5 +-
 .../Gui/Component/TemplatesEditorBase.cs           |    4 +-
 .../Gui/Component/TimeLineWidget.cs                |   12 +-
 .../Gui/Component/TimeReferenceWidget.cs           |    0
 .../Gui/Component/TimeScale.cs                     |    6 +-
 .../Gui/Dialog/About.cs                            |   34 +-
 .../Gui/Dialog/BusyDialog.cs                       |    0
 .../Gui/Dialog/DrawingTool.cs                      |    7 +-
 .../Gui/Dialog/EditCategoryDialog.cs               |    0
 .../Gui/Dialog/EditPlayerDialog.cs                 |    0
 .../Gui/Dialog/EndCaptureDialog.cs                 |    0
 .../Gui/Dialog/EntryDialog.cs                      |    0
 .../Gui/Dialog/FramesCaptureProgressDialog.cs      |    0
 .../Gui/Dialog/HotKeySelectorDialog.cs             |    0
 .../Gui/Dialog/NewProjectDialog.cs                 |    7 +
 .../Gui/Dialog/OpenProjectDialog.cs                |    5 +-
 .../Gui/Dialog/PlayersSelectionDialog.cs           |    0
 .../Gui/Dialog/ProjectSelectionDialog.cs           |    0
 .../Gui/Dialog/ProjectsManager.cs                  |   22 +-
 .../Gui/Dialog/RenderingJobsDialog.cs              |    6 +-
 .../Gui/Dialog/SnapshotsDialog.cs                  |    0
 .../Gui/Dialog/SubCategoryTagsEditor.cs            |    4 +-
 .../Gui/Dialog/TaggerDialog.cs                     |    0
 .../Gui/Dialog/TemplateEditorDialog.cs             |    4 +-
 .../Gui/Dialog/TemplatesManager.cs                 |   10 +-
 .../Gui/Dialog/UpdateDialog.cs                     |    0
 .../Gui/Dialog/VideoEditionProperties.cs           |    9 +-
 .../Gui/Dialog/Win32CalendarDialog.cs              |    0
 LongoMatch.GUI/Gui/MainWindow.cs                   |  743 ++++++++++++++++++++
 .../Gui/Popup/CalendarPopup.cs                     |    0
 .../Gui/Popup/MessagePopup.cs                      |    1 +
 .../Gui/TransparentDrawingArea.cs                  |    0
 .../Gui/TreeView/CategoriesTreeView.cs             |    0
 .../Gui/TreeView/ListTreeViewBase.cs               |    4 +-
 .../Gui/TreeView/PlayListTreeView.cs               |   50 +-
 .../Gui/TreeView/PlayerPropertiesTreeView.cs       |    0
 .../Gui/TreeView/PlayersTreeView.cs                |    0
 .../Gui/TreeView/PlaysTreeView.cs                  |    0
 .../Gui/TreeView/RenderingJobsTreeView.cs          |    2 +-
 .../Gui/TreeView/SubCategoriesTreeView.cs          |    0
 .../Gui/TreeView/TagsTreeView.cs                   |    0
 LongoMatch.GUI/LongoMatch.GUI.mdp                  |  165 +++++
 LongoMatch.GUI/Makefile.am                         |  125 ++++
 .../LongoMatch.Gui.Component.ButtonsWidget.cs      |   11 +-
 .../LongoMatch.Gui.Component.CategoryProperties.cs |  100 +--
 .../LongoMatch.Gui.Component.DrawingToolBox.cs     |   66 +--
 .../LongoMatch.Gui.Component.DrawingWidget.cs      |    3 +-
 .../LongoMatch.Gui.Component.NotesWidget.cs        |    9 +-
 .../LongoMatch.Gui.Component.PlayListWidget.cs     |   36 +-
 .../LongoMatch.Gui.Component.PlayerProperties.cs   |   68 +--
 ...ngoMatch.Gui.Component.PlayersListTreeWidget.cs |    3 +-
 ...LongoMatch.Gui.Component.PlayersTaggerWidget.cs |   20 +-
 ...LongoMatch.Gui.Component.PlaysListTreeWidget.cs |    3 +-
 ...ongoMatch.Gui.Component.ProjectDetailsWidget.cs |  135 ++---
 .../LongoMatch.Gui.Component.ProjectListWidget.cs  |   15 +-
 .../LongoMatch.Gui.Component.RenderingStateBar.cs  |   13 +-
 .../LongoMatch.Gui.Component.StringTaggerWidget.cs |    7 +-
 .../LongoMatch.Gui.Component.TaggerWidget.cs       |    5 +-
 .../LongoMatch.Gui.Component.TagsTreeWidget.cs     |   26 +-
 .../LongoMatch.Gui.Component.TeamTaggerWidget.cs   |    7 +-
 ...LongoMatch.Gui.Component.TemplatesEditorBase.cs |   42 +-
 .../LongoMatch.Gui.Component.TimeLineWidget.cs     |   41 +-
 .../gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs    |    8 +-
 .../gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs   |   26 +-
 .../LongoMatch.Gui.Dialog.EditCategoryDialog.cs    |   11 +-
 .../LongoMatch.Gui.Dialog.EditPlayerDialog.cs      |    7 +-
 .../LongoMatch.Gui.Dialog.EndCaptureDialog.cs      |   38 +-
 .../gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs   |   35 +-
 ...Match.Gui.Dialog.FramesCaptureProgressDialog.cs |   18 +-
 .../LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs  |    9 +-
 .../LongoMatch.Gui.Dialog.NewProjectDialog.cs      |   10 +-
 .../LongoMatch.Gui.Dialog.OpenProjectDialog.cs     |   10 +-
 ...LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs |   10 +-
 ...LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs |   41 +-
 .../LongoMatch.Gui.Dialog.ProjectsManager.cs       |   39 +-
 .../LongoMatch.Gui.Dialog.RenderingJobsDialog.cs   |   29 +-
 .../LongoMatch.Gui.Dialog.SnapshotsDialog.cs       |   27 +-
 .../LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs |   45 +-
 .../gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs  |   17 +-
 .../LongoMatch.Gui.Dialog.TemplateEditorDialog.cs  |    7 +-
 .../LongoMatch.Gui.Dialog.TemplatesManager.cs      |   32 +-
 .../gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs  |   19 +-
 ...LongoMatch.Gui.Dialog.VideoEditionProperties.cs |   67 +--
 .../LongoMatch.Gui.Dialog.Win32CalendarDialog.cs   |    7 +-
 .../gtk-gui/LongoMatch.Gui.MainWindow.cs           |  252 +++----
 .../gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs  |    4 +-
 .../LongoMatch.Gui.Popup.TransparentDrawingArea.cs |    2 +-
 .../gtk-gui/generated.cs                           |   31 +-
 {LongoMatch => LongoMatch.GUI}/gtk-gui/gui.stetic  |   68 +--
 {LongoMatch => LongoMatch.GUI}/gtk-gui/objects.xml |  249 ++++----
 .../Capturer/FakeCapturer.cs                       |    2 +
 .../Capturer/GstCameraCapturer.cs                  |   40 +-
 .../Capturer/LiveSourceTimer.cs                    |    0
 .../Capturer/ObjectManager.cs                      |    0
 .../Common/Constants.cs                            |    2 +-
 .../Common/Enum.cs                                 |   37 +-
 .../Common/Handlers.cs                             |    2 +-
 .../Editor/EditorState.cs                          |    0
 .../Editor/GstVideoSplitter.cs                     |    2 +
 .../Editor/VideoSegment.cs                         |    0
 .../Interfaces}/ICapturer.cs                       |    3 +-
 .../Interfaces}/IFramesCapturer.cs                 |    2 +-
 .../Interfaces}/IPlayer.cs                         |    3 +-
 .../Interfaces}/IVideoEditor.cs                    |    4 +-
 LongoMatch.Multimedia/LongoMatch.Multimedia.mdp    |   68 ++
 LongoMatch.Multimedia/Makefile.am                  |   33 +
 .../MultimediaFactory.cs                           |    9 +
 .../Player/GstPlayer.cs                            |    1 +
 .../Player/ObjectManager.cs                        |    0
 .../Utils/FramesCapturer.cs                        |    1 +
 .../Utils}/GStreamer.cs                            |   30 +-
 .../Utils/IMetadataReader.cs                       |    0
 .../Utils/MpegRemuxer.cs                           |    0
 .../Utils/PreviewMediaFile.cs                      |   52 +--
 .../Utils/TimeString.cs                            |    0
 .../Utils/VideoDevice.cs                           |   88 +--
 LongoMatch.Services/LongoMatch.Services.mdp        |   39 +
 LongoMatch.Services/Makefile.am                    |   17 +
 LongoMatch.Services/Services/Core.cs               |  179 +++++
 .../Services/DataBase.cs                           |   17 +-
 LongoMatch.Services/Services/EventsManager.cs      |  321 +++++++++
 .../Services}/HotKeysManager.cs                    |    5 +-
 LongoMatch.Services/Services/PlaylistManager.cs    |  219 ++++++
 LongoMatch.Services/Services/ProjectsManager.cs    |  523 ++++++++++++++
 .../Services}/RenderingJobsManager.cs              |   43 +-
 .../Services/TemplatesService.cs                   |   14 +-
 .../Services}/VideoDrawingsManager.cs              |   18 +-
 LongoMatch.mds                                     |   38 +-
 LongoMatch/Common/GuiUtils.cs                      |   53 --
 LongoMatch/Common/ProjectUtils.cs                  |  298 --------
 LongoMatch/Gui/Component/PlayListWidget.cs         |  262 -------
 LongoMatch/Gui/Dialog/Migrator.cs                  |  133 ----
 LongoMatch/Gui/MainWindow.cs                       |  643 -----------------
 LongoMatch/Handlers/DrawingManager.cs              |   80 ---
 LongoMatch/Handlers/EventsManager.cs               |  430 -----------
 LongoMatch/IO/CSVExport.cs                         |  184 -----
 LongoMatch/IO/XMLReader.cs                         |   88 ---
 LongoMatch/LongoMatch.csproj                       |  207 ------
 LongoMatch/LongoMatch.mdp                          |  221 +------
 LongoMatch/Main.cs                                 |  179 +-----
 LongoMatch/Makefile.am                             |  171 +-----
 LongoMatch/Updates/Updater.cs                      |  104 ---
 LongoMatch/Updates/XmlUpdateParser.cs              |   74 --
 .../gtk-gui/LongoMatch.Gui.Dialog.Migrator.cs      |  188 -----
 ...ongoMatch.Gui.TreeView.RenderingJobsTreeView.cs |   19 -
 Makefile.am                                        |   11 +-
 build/build.environment.mk                         |   54 ++-
 configure.ac                                       |   12 +-
 {LongoMatch/images => images}/background.png       |  Bin 53472 -> 53472 bytes
 {LongoMatch/images => images}/background.svg       |    0
 {LongoMatch/images => images}/camera-video.png     |  Bin 1660 -> 1660 bytes
 {LongoMatch/images => images}/logo.svg             |    0
 {LongoMatch/images => images}/logo_48x48.png       |  Bin 3045 -> 3045 bytes
 {LongoMatch/images => images}/longomatch.png       |  Bin 3045 -> 3045 bytes
 {LongoMatch/images => images}/minilogo.ico         |  Bin 9662 -> 9662 bytes
 {LongoMatch/images => images}/minilogo.png         |  Bin 3045 -> 3045 bytes
 {LongoMatch/images => images}/minilogo.rc          |    0
 {LongoMatch/images => images}/resource.h           |    0
 .../stock_draw-circle-unfilled.png                 |  Bin 418 -> 418 bytes
 .../images => images}/stock_draw-freeform-line.png |  Bin 276 -> 276 bytes
 .../images => images}/stock_draw-line-45.png       |  Bin 113 -> 113 bytes
 .../stock_draw-line-ends-with-arrow.png            |  Bin 155 -> 155 bytes
 .../stock_draw-rectangle-unfilled.png              |  Bin 123 -> 123 bytes
 {LongoMatch/images => images}/video.png            |  Bin 2044 -> 2044 bytes
 libcesarplayer/liblongomatch.mdp                   |   20 +-
 libcesarplayer/video-utils.c                       |    7 +
 libcesarplayer/video-utils.h                       |    8 +
 po/Translations.mdse                               |    6 +-
 tools/deb-pkg.sh                                   |    2 +-
 257 files changed, 4342 insertions(+), 5140 deletions(-)
---
diff --git a/LongoMatch/Common/Cairo.cs b/LongoMatch.Core/Common/Cairo.cs
similarity index 100%
rename from LongoMatch/Common/Cairo.cs
rename to LongoMatch.Core/Common/Cairo.cs
diff --git a/CesarPlayer/Common/CaptureSettings.cs b/LongoMatch.Core/Common/CaptureSettings.cs
similarity index 95%
rename from CesarPlayer/Common/CaptureSettings.cs
rename to LongoMatch.Core/Common/CaptureSettings.cs
index 1151e85..d28ddd6 100644
--- a/CesarPlayer/Common/CaptureSettings.cs
+++ b/LongoMatch.Core/Common/CaptureSettings.cs
@@ -17,9 +17,8 @@
 //
 
 using System;
-using LongoMatch.Video.Common;
 
-namespace LongoMatch.Video.Capturer
+namespace LongoMatch.Common
 {
 
 	public struct CaptureSettings
diff --git a/LongoMatch/Common/Cloner.cs b/LongoMatch.Core/Common/Cloner.cs
similarity index 100%
copy from LongoMatch/Common/Cloner.cs
copy to LongoMatch.Core/Common/Cloner.cs
diff --git a/LongoMatch/Common/ConsoleCrayon.cs b/LongoMatch.Core/Common/ConsoleCrayon.cs
similarity index 100%
rename from LongoMatch/Common/ConsoleCrayon.cs
rename to LongoMatch.Core/Common/ConsoleCrayon.cs
diff --git a/LongoMatch/Common/Constants.cs b/LongoMatch.Core/Common/Constants.cs
similarity index 99%
rename from LongoMatch/Common/Constants.cs
rename to LongoMatch.Core/Common/Constants.cs
index dcd3ebe..3c14bcf 100644
--- a/LongoMatch/Common/Constants.cs
+++ b/LongoMatch.Core/Common/Constants.cs
@@ -19,9 +19,10 @@
 using System;
 using Gdk;
 
+
 namespace LongoMatch.Common
 {
-	class Constants {
+	public class Constants {
 		public const string SOFTWARE_NAME = "LongoMatch";
 
 		public const string PROJECT_NAME = SOFTWARE_NAME + " project";
diff --git a/LongoMatch/Gui/Dialog/ProjectSelectionDialog.cs b/LongoMatch.Core/Common/Device.cs
similarity index 57%
copy from LongoMatch/Gui/Dialog/ProjectSelectionDialog.cs
copy to LongoMatch.Core/Common/Device.cs
index e62a596..e27c303 100644
--- a/LongoMatch/Gui/Dialog/ProjectSelectionDialog.cs
+++ b/LongoMatch.Core/Common/Device.cs
@@ -17,30 +17,45 @@
 //
 
 using System;
-using LongoMatch.Common;
+using System.Collections.Generic;
+using Mono.Unix;
 
-namespace LongoMatch.Gui.Dialog
+
+namespace LongoMatch.Common
 {
 
 
-	public partial class ProjectSelectionDialog : Gtk.Dialog
+	public class Device
 	{
+		public Device() {
+
+		}
 
-		public ProjectSelectionDialog()
-		{
-			this.Build();
+		/// <summary>
+		/// Device Type among Video, Audio or DV (for dv cameras)
+		/// </summary>
+		public DeviceType DeviceType {
+			get;
+			set;
 		}
 
-		public ProjectType ProjectType {
-			get {
-				if(fromfileradiobutton.Active)
-					return ProjectType.FileProject;
-				else if(liveradiobutton.Active)
-					return ProjectType.CaptureProject;
-				else
-					return ProjectType.FakeCaptureProject;
+		/// <summary>
+		/// Device id, can be a human friendly name (for DirectShow devices),
+		/// the de device name (/dev/video0) or the GUID (dv1394src)
+		/// </summary>
+		public string ID  {
+			get;
+			set;
+		}
+
+		/// <summary>
+		/// The name of the gstreamer element property used to set the device
+		/// </summary>
 
-			}
+		public string IDProperty {
+			get;
+			set;
 		}
+
 	}
 }
diff --git a/CesarPlayer/Common/EncodingProfiles.cs b/LongoMatch.Core/Common/EncodingProfiles.cs
similarity index 98%
rename from CesarPlayer/Common/EncodingProfiles.cs
rename to LongoMatch.Core/Common/EncodingProfiles.cs
index 9aa9317..03f4cf2 100644
--- a/CesarPlayer/Common/EncodingProfiles.cs
+++ b/LongoMatch.Core/Common/EncodingProfiles.cs
@@ -16,7 +16,7 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
-namespace LongoMatch.Video.Common
+namespace LongoMatch.Common
 {
 	[Serializable]
 	public struct EncodingProfile
diff --git a/CesarPlayer/Common/EncodingSettings.cs b/LongoMatch.Core/Common/EncodingSettings.cs
similarity index 97%
rename from CesarPlayer/Common/EncodingSettings.cs
rename to LongoMatch.Core/Common/EncodingSettings.cs
index e9d9926..eabc120 100644
--- a/CesarPlayer/Common/EncodingSettings.cs
+++ b/LongoMatch.Core/Common/EncodingSettings.cs
@@ -16,7 +16,7 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
-namespace LongoMatch.Video.Common
+namespace LongoMatch.Common
 {
 	[Serializable]
 	public struct EncodingSettings
diff --git a/LongoMatch/Common/Enums.cs b/LongoMatch.Core/Common/Enums.cs
similarity index 72%
rename from LongoMatch/Common/Enums.cs
rename to LongoMatch.Core/Common/Enums.cs
index f7906b5..ddfd87f 100644
--- a/LongoMatch/Common/Enums.cs
+++ b/LongoMatch.Core/Common/Enums.cs
@@ -61,4 +61,54 @@ namespace LongoMatch.Common
 		Cancelled,
 		Error,
 	}
+	
+	public enum VideoEncoderType {
+		Mpeg4,
+		Xvid,
+		Theora,
+		H264,
+		Mpeg2,
+		VP8,
+	}
+
+	public enum AudioEncoderType {
+		Mp3,
+		Aac,
+		Vorbis,
+	}
+
+	public enum VideoMuxerType {
+		Avi,
+		Mp4,
+		Matroska,
+		Ogg,
+		MpegPS,
+		WebM,
+	}
+	
+	public enum DrawTool {
+		PEN,
+		LINE,
+		DASHED_LINE,
+		CIRCLE,
+		DASHED_CIRCLE,
+		RECTANGLE,
+		DASHED_RECTANGLE,
+		CROSS,
+		DASHED_CROSS,
+		ERASER
+	}
+	
+	public enum CaptureSourceType {
+		None,
+		DV,
+		Raw,
+		DShow
+	}
+	
+	public enum DeviceType {
+		Video,
+		Audio,
+		DV
+	}
 }
diff --git a/LongoMatch/Common/Images.cs b/LongoMatch.Core/Common/Images.cs
similarity index 100%
rename from LongoMatch/Common/Images.cs
rename to LongoMatch.Core/Common/Images.cs
diff --git a/LongoMatch/Services/JobsManager/Job.cs b/LongoMatch.Core/Common/Job.cs
similarity index 93%
rename from LongoMatch/Services/JobsManager/Job.cs
rename to LongoMatch.Core/Common/Job.cs
index a6d2cf5..51e80c5 100644
--- a/LongoMatch/Services/JobsManager/Job.cs
+++ b/LongoMatch.Core/Common/Job.cs
@@ -16,14 +16,10 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
-using Gdk;
-using Stetic;
 
 using LongoMatch.Common;
-using LongoMatch.Playlist;
-using LongoMatch.Video.Common;
 
-namespace LongoMatch.Services.JobsManager
+namespace LongoMatch.Common
 {
 	[Serializable]
 	public class Job
diff --git a/LongoMatch/Common/Log.cs b/LongoMatch.Core/Common/Log.cs
similarity index 100%
rename from LongoMatch/Common/Log.cs
rename to LongoMatch.Core/Common/Log.cs
diff --git a/LongoMatch/Playlist/PlayList.cs b/LongoMatch.Core/Common/PlayList.cs
similarity index 84%
rename from LongoMatch/Playlist/PlayList.cs
rename to LongoMatch.Core/Common/PlayList.cs
index 583ec95..d4f100f 100644
--- a/LongoMatch/Playlist/PlayList.cs
+++ b/LongoMatch.Core/Common/PlayList.cs
@@ -20,15 +20,12 @@
 
 using System;
 using System.Collections.Generic;
-using System.Collections;
-using System.IO;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml.Serialization;
 using Gtk;
 using LongoMatch.Store;
 using LongoMatch.Common;
-using Mono.Unix;
-namespace LongoMatch.Playlist
+using LongoMatch.Interfaces;
+
+namespace LongoMatch.Common
 {
 
 
@@ -97,6 +94,25 @@ namespace LongoMatch.Playlist
 				indexSelection--;
 			return this[indexSelection];
 		}
+		
+		public void Reorder (int indexIn, int indexOut) {
+			var play = this[indexIn];
+			RemoveAt(indexIn);
+			Insert(indexOut, play);
+			
+			/* adjust selection index */
+			if (indexIn == indexSelection)
+				indexSelection = indexOut;
+			if (indexIn < indexOut) {
+				if (indexSelection < indexIn || indexSelection > indexOut)
+					return;
+				indexSelection++;
+			} else {
+				if (indexSelection > indexIn || indexSelection < indexOut)
+					return;
+				indexSelection--;
+			}
+		}
 
 		public new bool Remove(PlayListPlay plNode) {
 			bool ret = base.Remove(plNode);
diff --git a/LongoMatch/Common/SerializableObject.cs b/LongoMatch.Core/Common/SerializableObject.cs
similarity index 100%
rename from LongoMatch/Common/SerializableObject.cs
rename to LongoMatch.Core/Common/SerializableObject.cs
diff --git a/CesarPlayer/Common/VideoStandards.cs b/LongoMatch.Core/Common/VideoStandards.cs
similarity index 98%
rename from CesarPlayer/Common/VideoStandards.cs
rename to LongoMatch.Core/Common/VideoStandards.cs
index aa4f2b8..415fd12 100644
--- a/CesarPlayer/Common/VideoStandards.cs
+++ b/LongoMatch.Core/Common/VideoStandards.cs
@@ -18,7 +18,7 @@
 using System;
 using Mono.Unix;
 
-namespace LongoMatch.Video.Common
+namespace LongoMatch.Common
 {
 	[Serializable]
 	public struct VideoStandard
diff --git a/LongoMatch.Core/Config.cs b/LongoMatch.Core/Config.cs
new file mode 100644
index 0000000..262c3ad
--- /dev/null
+++ b/LongoMatch.Core/Config.cs
@@ -0,0 +1,67 @@
+// 
+//  Copyright (C) 2011 Andoni Morales Alastruey
+// 
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+// 
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//  GNU General Public License for more details.
+//  
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+// 
+using System;
+using System.IO;
+
+namespace LongoMatch
+{
+	public class Config
+	{
+		public static string baseDirectory;
+		public static string homeDirectory;
+		public static string configDirectory;
+		
+		public static string HomeDir() {
+			return homeDirectory;
+		}
+
+		public static string PlayListDir() {
+			return Path.Combine(homeDirectory, "playlists");
+		}
+
+		public static string SnapshotsDir() {
+			return Path.Combine(homeDirectory, "snapshots");
+		}
+
+		public static string TemplatesDir() {
+			return Path.Combine(configDirectory, "templates");
+		}
+
+		public static string VideosDir() {
+			return Path.Combine(homeDirectory, "videos");
+		}
+
+		public static string TempVideosDir() {
+			return Path.Combine(configDirectory, "temp");
+		}
+
+		public static string ImagesDir() {
+			return RelativeToPrefix("share/longomatch/images");
+		}
+
+		public static string DBDir() {
+			return Path.Combine(configDirectory, "db");
+		}
+		
+		public static string RelativeToPrefix(string relativePath) {
+			return Path.Combine(baseDirectory, relativePath);
+		}
+
+	}
+}
+
diff --git a/LongoMatch/Handlers/Handlers.cs b/LongoMatch.Core/Handlers/Handlers.cs
similarity index 50%
rename from LongoMatch/Handlers/Handlers.cs
rename to LongoMatch.Core/Handlers/Handlers.cs
index 5e6e3e6..cfa90d7 100644
--- a/LongoMatch/Handlers/Handlers.cs
+++ b/LongoMatch.Core/Handlers/Handlers.cs
@@ -20,80 +20,103 @@
 
 using System;
 using System.Collections.Generic;
-using LongoMatch;
-using LongoMatch.DB;
 using LongoMatch.Interfaces;
 using LongoMatch.Store;
 using LongoMatch.Common;
-using LongoMatch.Services.JobsManager;
 
 namespace LongoMatch.Handlers
 {
 
 	/*Tagging Events*/
-	//A Play was selected
-	public delegate void TimeNodeSelectedHandler(Play play);
-	//A new play needs to be create for a specific category at the current play time
-	public delegate void NewMarkEventHandler(Category category);
-	//The start time of a new play has been signaled
-	public delegate void NewMarkStartHandler();
-	//The stop of a nes play has been signaled
-	public delegate void NewMarkStopHandler(Category category);
-	//Several plays needs to be created for a several categories
-	public delegate void NewMarksEventHandler(List<int> sections);
-	//A need play needs to be created at precise frame
-	public delegate void NewMarkAtFrameEventHandler(Category category,int frame);
+	/* A Play was selected */
+	public delegate void PlaySelectedHandler(Play play);
+	/* A new play needs to be create for a specific category at the current play time */
+	public delegate void NewTagHandler(Category category);
+	/* Signal the start time to tag a new play */
+	public delegate void NewTagStartHandler();
+	/* Signal the stop time to tag a new play */
+	public delegate void NewTagStopHandler(Category category);
+	/* A new play needs to be created at a defined frame */
+	public delegate void NewTagAtFrameHandler(Category category,int frame);
 	//A play was edited
 	public delegate void TimeNodeChangedHandler(TimeNode tNode, object val);
-	//A list of plays was deleted
-	public delegate void TimeNodeDeletedHandler(List<Play> plays);
-	//Players needs to be tagged
-	public delegate void PlayersTaggedHandler(Play play, Team team);
-	//Tag a play
+	/* A list of plays needs to be deleted */
+	public delegate void PlaysDeletedHandler(List<Play> plays);
+	/* Tag a play */
 	public delegate void TagPlayHandler(Play play);
+	
+	/* Project Events */
+	public delegate void SaveProjectHandler(Project project, ProjectType projectType);
+	public delegate void OpenedProjectChangedHandler(Project project, ProjectType projectType);
+	public delegate void OpenProjectHandler();
+	public delegate void NewProjectHandler();
+	public delegate void ImportProjectHandler();
+	public delegate void ExportProjectHandler();
+	
+	/* GUI */
+	public delegate void ManageJobsHandler();
+	public delegate void ManageTeamsHandler();
+	public delegate void ManageCategoriesHandler();
+	public delegate void ManageProjects();
+	
 
 	/*Playlist Events*/
-	//Add the a play to the opened playlist
+	/* Add the a play to the opened playlist */
 	public delegate void PlayListNodeAddedHandler(Play play);
-	//A play list element is selected
-	public delegate void PlayListNodeSelectedHandler(PlayListPlay play, bool hasNext);
-	//Save current playrate to a play list element
+	/* A play list element is selected */
+	public delegate void PlayListNodeSelectedHandler(PlayListPlay play);
+	/* Save current playrate for a play list element */
 	public delegate void ApplyCurrentRateHandler(PlayListPlay play);
+	/* Open a playlist */
+	public delegate void OpenPlaylistHandler();
+	/* New a playlist */
+	public delegate void NewPlaylistHandler();
+	/* Save a playlist */
+	public delegate void SavePlaylistHandler();
+	/* Render a playlist */
+	public delegate void RenderPlaylistHandler();
 
-	//Drawing events
-	//Draw tool changed
-	public delegate void DrawToolChangedHandler(LongoMatch.Gui.Component.DrawTool drawTool);
-	//Paint color changed
+	/* Drawing events */
+	/* Draw tool changed */
+	public delegate void DrawToolChangedHandler(DrawTool drawTool);
+	/* Paint color changed */
 	public delegate void ColorChangedHandler(Gdk.Color color);
-	//Paint line width changed
+	/* Paint line width changed */
 	public delegate void LineWidthChangedHandler(int width);
-	//Toggle widget visibility
+	/* Toggle widget visibility */
 	public delegate void VisibilityChangedHandler(bool visible);
-	//Clear drawings
+	/* Clear drawings */
 	public delegate void ClearDrawingHandler();
-	//Transparency value changed
+	/* Transparency value changed */
 	public delegate void TransparencyChangedHandler(double transparency);
-
-
-	//The position of the stream has changed
+	
+	/* The position of the stream has changed */
 	public delegate void PositionChangedHandler(Time pos);
-	//A date was selected
-	public delegate void DateSelectedHandler(DateTime selectedDate);
-	//Create snapshots for a play
+	
+	/* Create snapshots for a play */
 	public delegate void SnapshotSeriesHandler(Play tNode);
-	//A new version of the software exists
+	
+	/* Add a new rendering job */
+	public delegate void NewJobHandler(Job job);
+	 
+	/* A date was selected */
+	public delegate void DateSelectedHandler(DateTime selectedDate);
+	
+	/* A new version of the software exists */
 	public delegate void NewVersionHandler(Version version, string URL);
 
-
+	/* Edit Category */
 	public delegate void CategoryHandler(Category category);
 	public delegate void CategoriesHandler(List<Category> categoriesList);
+	
+	/* Edit Subcategory properties */
 	public delegate void SubCategoryHandler(ISubCategory subcat);
 	public delegate void SubCategoriesHandler(List<ISubCategory> subcat);
 
+	/* Edit player properties */
 	public delegate void PlayerPropertiesHandler(Player player);
 	public delegate void PlayersPropertiesHandler(List<Player> players);
 	
+	/* A list of projects have been selected */
 	public delegate void ProjectsSelectedHandler(List<ProjectDescription> projects);
-
-	public delegate void JobHandler(Job job);
 }
diff --git a/LongoMatch/Interfaces/ISubCategory.cs b/LongoMatch.Core/Interfaces/IDatabase.cs
similarity index 73%
copy from LongoMatch/Interfaces/ISubCategory.cs
copy to LongoMatch.Core/Interfaces/IDatabase.cs
index b78486e..2f91133 100644
--- a/LongoMatch/Interfaces/ISubCategory.cs
+++ b/LongoMatch.Core/Interfaces/IDatabase.cs
@@ -16,18 +16,24 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
+using System.Collections.Generic;
+using LongoMatch.Store;
+
 namespace LongoMatch.Interfaces
 {
-	public interface ISubCategory
+	public interface IDatabase
 	{
-		string Name {get; set;}
+		List<ProjectDescription> GetAllProjects();
+
+		Project GetProject(Guid id);
 		
-		bool AllowMultiple {get; set;}
+		void AddProject(Project project);
 		
-		bool FastTag {get; set;}
+		void RemoveProject(Guid id);
 		
-		string ToMarkupString();
+		void UpdateProject(Project project);
 		
+		bool Exists(Project project);
 	}
 }
 
diff --git a/LongoMatch/Playlist/IPlayList.cs b/LongoMatch.Core/Interfaces/IPlayList.cs
similarity index 92%
rename from LongoMatch/Playlist/IPlayList.cs
rename to LongoMatch.Core/Interfaces/IPlayList.cs
index f787cd7..63a9ed5 100644
--- a/LongoMatch/Playlist/IPlayList.cs
+++ b/LongoMatch.Core/Interfaces/IPlayList.cs
@@ -23,14 +23,16 @@ using System.Collections;
 using Gtk;
 using LongoMatch.Store;
 
-namespace LongoMatch.Playlist {
+namespace LongoMatch.Interfaces {
 
 	public interface IPlayList:IEnumerable
 	{
 		int Count {
 			get;
 		}
-
+		
+		void Save();
+		
 		void Save(string path);
 
 		void Add(PlayListPlay play);
@@ -43,6 +45,8 @@ namespace LongoMatch.Playlist {
 
 		PlayListPlay Select(int index);
 
+		void Reorder(int indexIn, int indexOut);
+
 		int GetCurrentIndex();
 
 		bool HasNext();
diff --git a/LongoMatch/Interfaces/ISubCategory.cs b/LongoMatch.Core/Interfaces/IPlaylistWidget.cs
similarity index 79%
copy from LongoMatch/Interfaces/ISubCategory.cs
copy to LongoMatch.Core/Interfaces/IPlaylistWidget.cs
index b78486e..5a4051e 100644
--- a/LongoMatch/Interfaces/ISubCategory.cs
+++ b/LongoMatch.Core/Interfaces/IPlaylistWidget.cs
@@ -16,18 +16,17 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
+
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+
 namespace LongoMatch.Interfaces
 {
-	public interface ISubCategory
+	public interface IPlaylistWidget
 	{
-		string Name {get; set;}
-		
-		bool AllowMultiple {get; set;}
-		
-		bool FastTag {get; set;}
-		
-		string ToMarkupString();
-		
+		void Load(IPlayList playlist);
+		void Add(PlayListPlay playlistPlay);
+		void SetActivePlay (PlayListPlay playlistplay, int index);
 	}
 }
 
diff --git a/LongoMatch/Interfaces/ISubCategory.cs b/LongoMatch.Core/Interfaces/IRenderingJobsManager.cs
similarity index 69%
copy from LongoMatch/Interfaces/ISubCategory.cs
copy to LongoMatch.Core/Interfaces/IRenderingJobsManager.cs
index b78486e..a365cbc 100644
--- a/LongoMatch/Interfaces/ISubCategory.cs
+++ b/LongoMatch.Core/Interfaces/IRenderingJobsManager.cs
@@ -16,18 +16,23 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
+using System.Collections.Generic;
+using Gtk;
+using LongoMatch.Common;
+
 namespace LongoMatch.Interfaces
 {
-	public interface ISubCategory
+	public interface IRenderingJobsManager
 	{
-		string Name {get; set;}
-		
-		bool AllowMultiple {get; set;}
-		
-		bool FastTag {get; set;}
-		
-		string ToMarkupString();
-		
+		void RetryJobs(List<Job> retryJobs);
+		void DeleteJob(Job job);
+		void ClearDoneJobs();
+		void CancelJobs(List<Job> cancelJobs);
+		void CancelCurrentJob ();
+		void CancelJob(Job job);
+		void CancelAllJobs();
+		void AddJob(Job job);
+		TreeStore Model {get;}
 	}
 }
 
diff --git a/LongoMatch/Interfaces/ISubCategory.cs b/LongoMatch.Core/Interfaces/ISubCategory.cs
similarity index 100%
copy from LongoMatch/Interfaces/ISubCategory.cs
copy to LongoMatch.Core/Interfaces/ISubCategory.cs
diff --git a/LongoMatch/Interfaces/ITag.cs b/LongoMatch.Core/Interfaces/ITag.cs
similarity index 100%
rename from LongoMatch/Interfaces/ITag.cs
rename to LongoMatch.Core/Interfaces/ITag.cs
diff --git a/LongoMatch/Interfaces/ITemplates.cs b/LongoMatch.Core/Interfaces/ITemplates.cs
similarity index 100%
rename from LongoMatch/Interfaces/ITemplates.cs
rename to LongoMatch.Core/Interfaces/ITemplates.cs
diff --git a/LongoMatch/Interfaces/ISubCategory.cs b/LongoMatch.Core/Interfaces/ITemplatesService.cs
similarity index 58%
rename from LongoMatch/Interfaces/ISubCategory.cs
rename to LongoMatch.Core/Interfaces/ITemplatesService.cs
index b78486e..aa1d61a 100644
--- a/LongoMatch/Interfaces/ISubCategory.cs
+++ b/LongoMatch.Core/Interfaces/ITemplatesService.cs
@@ -16,18 +16,27 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
+using System.Collections.Generic;
+using LongoMatch.Store;
+using LongoMatch.Store.Templates;
+
 namespace LongoMatch.Interfaces
 {
-	public interface ISubCategory
+	public interface ITemplatesService
 	{
-		string Name {get; set;}
+		ITemplateProvider<T, U> GetTemplateProvider<T, U>() where T: ITemplate<U>;
+		
+		ITemplateWidget<T, U> GetTemplateEditor<T, U>() where T: ITemplate<U>;
 		
-		bool AllowMultiple {get; set;}
+		ITemplateProvider<SubCategoryTemplate, string> SubCategoriesTemplateProvider {get;}
 		
-		bool FastTag {get; set;}
+		ITemplateProvider<TeamTemplate, Player> TeamTemplateProvider {get;}
+
+		ITemplateProvider<Categories, Category> CategoriesTemplateProvider {get;}
 		
-		string ToMarkupString();
+		List<PlayerSubCategory> PlayerSubcategories {get;}
 		
+		List<TeamSubCategory> TeamSubcategories {get;}
 	}
 }
 
diff --git a/LongoMatch.Core/LongoMatch.Core.mdp b/LongoMatch.Core/LongoMatch.Core.mdp
new file mode 100644
index 0000000..6a7a326
--- /dev/null
+++ b/LongoMatch.Core/LongoMatch.Core.mdp
@@ -0,0 +1,83 @@
+<Project name="LongoMatch.Core" fileversion="2.0" DefaultNamespace="LongoMatch.Core" language="C#" targetFramework="4.0" ctype="DotNetProject">
+  <Configurations active="Release">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Core" />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" definesymbols="DEBUG" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Core" />
+      <Build debugmode="False" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File subtype="Code" buildaction="Compile" name="Common/Cairo.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Cloner.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/ConsoleCrayon.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Constants.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Enums.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Images.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Log.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/SerializableObject.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Category.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Drawing.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/HotKey.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/PixbufTimeNode.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Play.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Player.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/PlayListPlay.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Project.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/ProjectDescription.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/SubCategory.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Tag.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/TagStore.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Time.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/TimeNode.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Templates/CategoriesTemplate.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Templates/SubCategoryTemplate.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Templates/TeamTemplate.cs" />
+    <File subtype="Code" buildaction="Compile" name="Store/Templates/Template.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/ISubCategory.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/ITag.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/ITemplates.cs" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Code" buildaction="Compile" name="Store/MediaFile.cs" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Directory" buildaction="Compile" name="Handlers" />
+    <File subtype="Code" buildaction="Compile" name="Handlers/Handlers.cs" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Code" buildaction="Compile" name="Common/Job.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/EncodingProfiles.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/EncodingSettings.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/VideoStandards.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IPlayList.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/PlayList.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/CaptureSettings.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Device.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IRenderingJobsManager.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Interfaces" />
+    <File subtype="Directory" buildaction="Compile" name="Interfaces" />
+    <File subtype="Directory" buildaction="Compile" name="Interfaces" />
+    <File subtype="Directory" buildaction="Compile" name="Interfaces" />
+    <File subtype="Code" buildaction="Compile" name="Config.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/ITemplatesService.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IDatabase.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IPlaylistWidget.cs" />
+  </Contents>
+  <References>
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+  </References>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.Core/Makefile.am b/LongoMatch.Core/Makefile.am
new file mode 100644
index 0000000..a661dc6
--- /dev/null
+++ b/LongoMatch.Core/Makefile.am
@@ -0,0 +1,54 @@
+ASSEMBLY = LongoMatch.Core
+TARGET = library
+
+LINK = $(REF_DEP_LONGOMATCH_CORE)
+
+SOURCES = \
+	Common/Cairo.cs \
+	Common/CaptureSettings.cs \
+	Common/Cloner.cs \
+	Common/ConsoleCrayon.cs \
+	Common/Constants.cs \
+	Common/Device.cs \
+	Common/EncodingProfiles.cs \
+	Common/EncodingSettings.cs \
+	Common/Enums.cs \
+	Common/Images.cs \
+	Common/Job.cs \
+	Common/Log.cs \
+	Common/PlayList.cs \
+	Common/SerializableObject.cs \
+	Common/VideoStandards.cs \
+	Config.cs \
+	Handlers/Handlers.cs \
+	Interfaces/IDatabase.cs \
+	Interfaces/IPlayList.cs \
+	Interfaces/IPlaylistWidget.cs \
+	Interfaces/IRenderingJobsManager.cs \
+	Interfaces/ISubCategory.cs \
+	Interfaces/ITag.cs \
+	Interfaces/ITemplates.cs \
+	Interfaces/ITemplatesService.cs \
+	Store/Category.cs \
+	Store/Drawing.cs \
+	Store/HotKey.cs \
+	Store/MediaFile.cs \
+	Store/PixbufTimeNode.cs \
+	Store/Play.cs \
+	Store/Player.cs \
+	Store/PlayListPlay.cs \
+	Store/Project.cs \
+	Store/ProjectDescription.cs \
+	Store/SubCategory.cs \
+	Store/Tag.cs \
+	Store/TagStore.cs \
+	Store/Templates/CategoriesTemplate.cs \
+	Store/Templates/SubCategoryTemplate.cs \
+	Store/Templates/TeamTemplate.cs \
+	Store/Templates/Template.cs \
+	Store/Time.cs \
+	Store/TimeNode.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
diff --git a/LongoMatch/Store/Category.cs b/LongoMatch.Core/Store/Category.cs
similarity index 100%
rename from LongoMatch/Store/Category.cs
rename to LongoMatch.Core/Store/Category.cs
diff --git a/LongoMatch/Store/Drawing.cs b/LongoMatch.Core/Store/Drawing.cs
similarity index 100%
rename from LongoMatch/Store/Drawing.cs
rename to LongoMatch.Core/Store/Drawing.cs
diff --git a/LongoMatch/Store/HotKey.cs b/LongoMatch.Core/Store/HotKey.cs
similarity index 99%
rename from LongoMatch/Store/HotKey.cs
rename to LongoMatch.Core/Store/HotKey.cs
index d3ff711..e58870d 100644
--- a/LongoMatch/Store/HotKey.cs
+++ b/LongoMatch.Core/Store/HotKey.cs
@@ -23,7 +23,6 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.Serialization;
-using Gtk;
 using Gdk;
 using Mono.Unix;
 
diff --git a/CesarPlayer/Utils/MediaFile.cs b/LongoMatch.Core/Store/MediaFile.cs
similarity index 66%
rename from CesarPlayer/Utils/MediaFile.cs
rename to LongoMatch.Core/Store/MediaFile.cs
index 1c76a5f..708e8e5 100644
--- a/CesarPlayer/Utils/MediaFile.cs
+++ b/LongoMatch.Core/Store/MediaFile.cs
@@ -21,15 +21,11 @@
 using System;
 using Mono.Unix;
 using Gdk;
-using LongoMatch.Video;
-using LongoMatch.Video.Player;
-using LongoMatch.Video.Common;
 
-namespace LongoMatch.Video.Utils
+namespace LongoMatch.Store
 {
 
 	[Serializable]
-
 	public class MediaFile
 	{
 
@@ -42,6 +38,7 @@ namespace LongoMatch.Video.Utils
 		string audioCodec;
 		uint videoHeight;
 		uint videoWidth;
+		byte[] thumbnailBuf;
 
 
 		public MediaFile() {}
@@ -54,7 +51,8 @@ namespace LongoMatch.Video.Utils
 		                 string videoCodec,
 		                 string audioCodec,
 		                 uint videoWidth,
-		                 uint videoHeight)
+		                 uint videoHeight, 
+		                 Pixbuf preview)
 		{
 			this.filePath = filePath;
 			this.length = length;
@@ -69,7 +67,7 @@ namespace LongoMatch.Video.Utils
 				this.fps=25;
 			else
 				this.fps = fps;
-
+			this.Preview = preview;
 		}
 
 		public string FilePath {
@@ -156,50 +154,24 @@ namespace LongoMatch.Video.Utils
 					this.fps = value;
 			}
 		}
-
-		public uint GetFrames() {
-			return (uint)(Fps*Length/1000);
-		}
-
-
-
-		public static MediaFile GetMediaFile(string filePath) {
-			int duration, fps=0, height=0, width=0;
-			bool hasVideo, hasAudio;
-			string audioCodec = "", videoCodec = "";
-			MultimediaFactory factory;
-			IMetadataReader reader = null;
-
-			try {
-				factory =  new MultimediaFactory();
-				reader = factory.getMetadataReader();
-				reader.Open(filePath);
-				duration = (int)reader.GetMetadata(MetadataType.Duration);
-				hasVideo = (bool) reader.GetMetadata(MetadataType.HasVideo);
-				hasAudio = (bool) reader.GetMetadata(MetadataType.HasAudio);
-				if(hasAudio)
-					audioCodec = (string) reader.GetMetadata(MetadataType.AudioEncoderType);
-				if(hasVideo) {
-					videoCodec = (string) reader.GetMetadata(MetadataType.VideoEncoderType);
-					fps = (int) reader.GetMetadata(MetadataType.Fps);
-				}
-				height = (int) reader.GetMetadata(MetadataType.DimensionX);
-				width = (int) reader.GetMetadata(MetadataType.DimensionY);
-
-				return new MediaFile(filePath,duration*1000,(ushort)fps,
-				                     hasAudio,hasVideo,videoCodec,audioCodec,
-				                     (uint)height,(uint)width);
-
-			}
-			catch(GLib.GException ex) {
-				throw new Exception(Catalog.GetString("Invalid video file:")+"\n"+ex.Message);
+		
+		public Pixbuf Preview {
+			get {
+				if(thumbnailBuf != null)
+					return new Pixbuf(thumbnailBuf);
+				return null;
 			}
-			finally {
-				reader.Close();
-				reader.Dispose();
+			set {
+				if(value != null) {
+					thumbnailBuf = value.SaveToBuffer("png");
+					value.Dispose();
+				} else
+					thumbnailBuf = null;
 			}
 		}
-
-
+		
+		public uint GetFrames() {
+			return (uint)(Fps*Length/1000);
+		}
 	}
 }
diff --git a/LongoMatch/Store/PixbufTimeNode.cs b/LongoMatch.Core/Store/PixbufTimeNode.cs
similarity index 100%
rename from LongoMatch/Store/PixbufTimeNode.cs
rename to LongoMatch.Core/Store/PixbufTimeNode.cs
diff --git a/LongoMatch/Store/Play.cs b/LongoMatch.Core/Store/Play.cs
similarity index 100%
rename from LongoMatch/Store/Play.cs
rename to LongoMatch.Core/Store/Play.cs
diff --git a/LongoMatch/Store/PlayListPlay.cs b/LongoMatch.Core/Store/PlayListPlay.cs
similarity index 88%
rename from LongoMatch/Store/PlayListPlay.cs
rename to LongoMatch.Core/Store/PlayListPlay.cs
index 480116e..affb607 100644
--- a/LongoMatch/Store/PlayListPlay.cs
+++ b/LongoMatch.Core/Store/PlayListPlay.cs
@@ -21,7 +21,6 @@
 using System;
 using System.Collections.Generic;
 using Gdk;
-using LongoMatch.Video.Utils;
 
 namespace LongoMatch.Store
 {
@@ -38,7 +37,7 @@ namespace LongoMatch.Store
 			Valid = true;
 		}
 		
-		public PlayListPlay(Play play, PreviewMediaFile mediaFile, float rate, bool valid)
+		public PlayListPlay(Play play, MediaFile mediaFile, float rate, bool valid)
 		{
 			Name = play.Name;
 			Start = play.Start;
@@ -55,15 +54,7 @@ namespace LongoMatch.Store
 		/// <summary>
 		/// Media File
 		/// </summary>
-		public PreviewMediaFile MediaFile {
-			get;
-			set;
-		}
-
-		/// <summary>
-		/// Play rate
-		/// </summary>
-		public float Rate {
+		public MediaFile MediaFile {
 			get;
 			set;
 		}
diff --git a/LongoMatch/Store/Player.cs b/LongoMatch.Core/Store/Player.cs
similarity index 100%
rename from LongoMatch/Store/Player.cs
rename to LongoMatch.Core/Store/Player.cs
diff --git a/LongoMatch/Store/Project.cs b/LongoMatch.Core/Store/Project.cs
similarity index 100%
rename from LongoMatch/Store/Project.cs
rename to LongoMatch.Core/Store/Project.cs
diff --git a/LongoMatch/Store/ProjectDescription.cs b/LongoMatch.Core/Store/ProjectDescription.cs
similarity index 97%
rename from LongoMatch/Store/ProjectDescription.cs
rename to LongoMatch.Core/Store/ProjectDescription.cs
index 144aa86..216a7af 100644
--- a/LongoMatch/Store/ProjectDescription.cs
+++ b/LongoMatch.Core/Store/ProjectDescription.cs
@@ -18,7 +18,6 @@
 
 using System;
 using LongoMatch.Store;
-using LongoMatch.Video.Utils;
 
 namespace LongoMatch.Store
 {
@@ -49,7 +48,7 @@ namespace LongoMatch.Store
 		/// <summary>
 		/// Media file asigned to this project
 		/// </summary>
-		public PreviewMediaFile File {
+		public MediaFile File {
 			get;
 			set;
 		}
diff --git a/LongoMatch/Store/SubCategory.cs b/LongoMatch.Core/Store/SubCategory.cs
similarity index 100%
rename from LongoMatch/Store/SubCategory.cs
rename to LongoMatch.Core/Store/SubCategory.cs
diff --git a/LongoMatch/Store/Tag.cs b/LongoMatch.Core/Store/Tag.cs
similarity index 100%
rename from LongoMatch/Store/Tag.cs
rename to LongoMatch.Core/Store/Tag.cs
diff --git a/LongoMatch/Store/TagStore.cs b/LongoMatch.Core/Store/TagStore.cs
similarity index 100%
rename from LongoMatch/Store/TagStore.cs
rename to LongoMatch.Core/Store/TagStore.cs
diff --git a/LongoMatch/Store/Templates/CategoriesTemplate.cs b/LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
similarity index 100%
rename from LongoMatch/Store/Templates/CategoriesTemplate.cs
rename to LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
diff --git a/LongoMatch/Store/Templates/SubCategoryTemplate.cs b/LongoMatch.Core/Store/Templates/SubCategoryTemplate.cs
similarity index 100%
rename from LongoMatch/Store/Templates/SubCategoryTemplate.cs
rename to LongoMatch.Core/Store/Templates/SubCategoryTemplate.cs
diff --git a/LongoMatch/Store/Templates/TeamTemplate.cs b/LongoMatch.Core/Store/Templates/TeamTemplate.cs
similarity index 100%
rename from LongoMatch/Store/Templates/TeamTemplate.cs
rename to LongoMatch.Core/Store/Templates/TeamTemplate.cs
diff --git a/LongoMatch/Store/Templates/Template.cs b/LongoMatch.Core/Store/Templates/Template.cs
similarity index 100%
rename from LongoMatch/Store/Templates/Template.cs
rename to LongoMatch.Core/Store/Templates/Template.cs
diff --git a/LongoMatch/Store/Time.cs b/LongoMatch.Core/Store/Time.cs
similarity index 100%
rename from LongoMatch/Store/Time.cs
rename to LongoMatch.Core/Store/Time.cs
diff --git a/LongoMatch/Store/TimeNode.cs b/LongoMatch.Core/Store/TimeNode.cs
similarity index 93%
rename from LongoMatch/Store/TimeNode.cs
rename to LongoMatch.Core/Store/TimeNode.cs
index c1f7b5a..8a1eb19 100644
--- a/LongoMatch/Store/TimeNode.cs
+++ b/LongoMatch.Core/Store/TimeNode.cs
@@ -34,6 +34,7 @@ namespace LongoMatch.Store
 	{
 		#region Constructors
 		public TimeNode() {
+			Rate = 1;
 		}
 		#endregion
 
@@ -70,6 +71,15 @@ namespace LongoMatch.Store
 				return Stop-Start;
 			}
 		}
+		
+		/// <summary>
+		/// Play rate
+		/// </summary>
+		public float Rate {
+			get;
+			set;
+		}
+
 		#endregion
 
 	}
diff --git a/CesarPlayer/AssemblyInfo.cs.in b/LongoMatch.GUI.Multimedia/AssemblyInfo.cs
similarity index 97%
copy from CesarPlayer/AssemblyInfo.cs.in
copy to LongoMatch.GUI.Multimedia/AssemblyInfo.cs
index 704b4fd..1c1a88f 100644
--- a/CesarPlayer/AssemblyInfo.cs.in
+++ b/LongoMatch.GUI.Multimedia/AssemblyInfo.cs
@@ -41,7 +41,7 @@ using System.Runtime.CompilerServices;
 // You can specify all values by your own or you can build default build and revision
 // numbers with the '*' character (the default):
 
-[assembly: AssemblyVersion("@PACKAGE_VERSION@")]
+[assembly: AssemblyVersion("0.17.2")]
 
 // The following attributes specify the key for the sign of your assembly. See the
 // .NET Framework documentation for more information about signing.
diff --git a/CesarPlayer/AssemblyInfo.cs.in b/LongoMatch.GUI.Multimedia/AssemblyInfo.cs.in
similarity index 100%
rename from CesarPlayer/AssemblyInfo.cs.in
rename to LongoMatch.GUI.Multimedia/AssemblyInfo.cs.in
diff --git a/CesarPlayer/CesarPlayer.csproj b/LongoMatch.GUI.Multimedia/CesarPlayer.csproj
similarity index 100%
rename from CesarPlayer/CesarPlayer.csproj
rename to LongoMatch.GUI.Multimedia/CesarPlayer.csproj
diff --git a/CesarPlayer/CesarPlayer.dll.config.in b/LongoMatch.GUI.Multimedia/CesarPlayer.dll.config.in
similarity index 100%
rename from CesarPlayer/CesarPlayer.dll.config.in
rename to LongoMatch.GUI.Multimedia/CesarPlayer.dll.config.in
diff --git a/CesarPlayer/Gui/CapturerBin.cs b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
similarity index 99%
rename from CesarPlayer/Gui/CapturerBin.cs
rename to LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
index bb5c8dd..7db84e3 100644
--- a/CesarPlayer/Gui/CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
@@ -21,7 +21,8 @@
 using System;
 using Gtk;
 using Gdk;
-using GLib;
+using LongoMatch.Common;
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video;
 using LongoMatch.Video.Common;
 using LongoMatch.Video.Capturer;
@@ -168,7 +169,7 @@ namespace LongoMatch.Gui
 					capturerhbox.Remove(capturer as Gtk.Widget);
 					capturer.Dispose();
 				}
-			} catch(Exception e) {}
+			} catch(Exception) {}
 			capturer = null;
 		}
 
diff --git a/CesarPlayer/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
similarity index 99%
rename from CesarPlayer/Gui/PlayerBin.cs
rename to LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 242c7d7..7f98fbe 100644
--- a/CesarPlayer/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -22,6 +22,7 @@ using Gtk;
 using Gdk;
 using Mono.Unix;
 using System.Runtime.InteropServices;
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video;
 using LongoMatch.Video.Common;
 using LongoMatch.Video.Player;
diff --git a/CesarPlayer/Gui/VolumeWindow.cs b/LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs
similarity index 100%
rename from CesarPlayer/Gui/VolumeWindow.cs
rename to LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
new file mode 100644
index 0000000..7790f07
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
@@ -0,0 +1,49 @@
+<Project name="LongoMatch.GUI.Multimedia" fileversion="2.0" DefaultNamespace="longomatch" language="C#" clr-version="Net_2_0" targetFramework="4.0" ctype="DotNetProject">
+  <Deployment.LinuxDeployData generatePcFile="False" />
+  <Configurations active="Release">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.GUI.Multimedia" assemblyKeyFile="/home/andoni/Proyectos/longomatch/CesarPlayer/." />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.GUI.Multimedia" assemblyKeyFile="/home/andoni/Proyectos/longomatch/CesarPlayer/." />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File subtype="Directory" buildaction="Compile" name="Gui" />
+    <File subtype="Code" buildaction="Compile" name="Gui/CapturerBin.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/PlayerBin.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/VolumeWindow.cs" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Code" buildaction="EmbedAsResource" name="gtk-gui/gui.stetic" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/generated.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.CapturerBin.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.VolumeWindow.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.PlayerBin.cs" />
+  </Contents>
+  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" RelativeConfigureInPath="../">
+    <BuildFilesVar Name="FILES" />
+    <DeployFilesVar />
+    <ResourcesVar Name="RESOURCES" />
+    <OthersVar />
+    <GacRefVar Name="REFERENCES" />
+    <AsmRefVar Name="REFERENCES" />
+    <ProjectRefVar Name="REFERENCES" />
+  </MonoDevelop.Autotools.MakefileInfo>
+  <References>
+    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Multimedia" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  </References>
+  <LanguageParameters ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.Gui.Multimedia.dll.config b/LongoMatch.GUI.Multimedia/LongoMatch.Gui.Multimedia.dll.config
new file mode 100644
index 0000000..72f9cb1
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.Gui.Multimedia.dll.config
@@ -0,0 +1,3 @@
+<configuration>
+        <dllmap dll="libcesarplayer.dll" target="/usr/local/lib/longomatch/libcesarplayer.so.0"/>
+</configuration>
diff --git a/LongoMatch.GUI.Multimedia/Makefile.am b/LongoMatch.GUI.Multimedia/Makefile.am
new file mode 100644
index 0000000..c5ed3a7
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/Makefile.am
@@ -0,0 +1,23 @@
+ASSEMBLY = LongoMatch.GUI.Multimedia
+TARGET = library
+
+LINK = $(REF_DEP_LONGOMATCH_GUI_MULTIMEDIA)
+
+SOURCES = \
+	gtk-gui/generated.cs \
+	gtk-gui/LongoMatch.Gui.CapturerBin.cs \
+	gtk-gui/LongoMatch.Gui.PlayerBin.cs \
+	gtk-gui/LongoMatch.Gui.VolumeWindow.cs \
+	Gui/CapturerBin.cs \
+	Gui/PlayerBin.cs \
+	Gui/VolumeWindow.cs
+
+RESOURCES = \
+	gtk-gui/objects.xml \
+	gtk-gui/gui.stetic
+
+DLLCONFIG = LongoMatch.Gui.Multimedia.dll.config
+
+include $(top_srcdir)/build/build.mk
+
+EXTRA_DIST += LongoMatch.Gui.Multimedia.dll.config
diff --git a/LongoMatch.GUI.Multimedia/a.dll b/LongoMatch.GUI.Multimedia/a.dll
new file mode 100755
index 0000000..1ad1367
Binary files /dev/null and b/LongoMatch.GUI.Multimedia/a.dll differ
diff --git a/LongoMatch.GUI.Multimedia/a.dll.mdb b/LongoMatch.GUI.Multimedia/a.dll.mdb
new file mode 100644
index 0000000..66e58d9
Binary files /dev/null and b/LongoMatch.GUI.Multimedia/a.dll.mdb differ
diff --git a/CesarPlayer/cesarplayer.key b/LongoMatch.GUI.Multimedia/cesarplayer.key
similarity index 100%
rename from CesarPlayer/cesarplayer.key
rename to LongoMatch.GUI.Multimedia/cesarplayer.key
diff --git a/CesarPlayer/cesarplayer.pc.in b/LongoMatch.GUI.Multimedia/cesarplayer.pc
similarity index 56%
copy from CesarPlayer/cesarplayer.pc.in
copy to LongoMatch.GUI.Multimedia/cesarplayer.pc
index 918f35c..e4e775c 100644
--- a/CesarPlayer/cesarplayer.pc.in
+++ b/LongoMatch.GUI.Multimedia/cesarplayer.pc
@@ -3,4 +3,4 @@ Description: CesarPlayer
 Version: 0.1
 
 Requires: 
-Libs: -r:@expanded_libdir@/@PACKAGE@/CesarPlayer.dll
+Libs: -r:/usr/local/lib/longomatch/CesarPlayer.dll
diff --git a/CesarPlayer/cesarplayer.pc.in b/LongoMatch.GUI.Multimedia/cesarplayer.pc.in
similarity index 100%
rename from CesarPlayer/cesarplayer.pc.in
rename to LongoMatch.GUI.Multimedia/cesarplayer.pc.in
diff --git a/CesarPlayer/gtk-gui/LongoMatch.Gui.CapturerBin.cs b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
similarity index 91%
rename from CesarPlayer/gtk-gui/LongoMatch.Gui.CapturerBin.cs
rename to LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
index 8d70678..0e59f12 100644
--- a/CesarPlayer/gtk-gui/LongoMatch.Gui.CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
@@ -5,23 +5,15 @@ namespace LongoMatch.Gui
 	public partial class CapturerBin
 	{
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.HBox capturerhbox;
-
 		private global::Gtk.DrawingArea logodrawingarea;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.HBox buttonsbox;
-
 		private global::Gtk.Button recbutton;
-
 		private global::Gtk.Button pausebutton;
-
 		private global::Gtk.Button stopbutton;
-
 		private global::Gtk.Label timelabel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -37,13 +29,13 @@ namespace LongoMatch.Gui
 			this.capturerhbox.Name = "capturerhbox";
 			this.capturerhbox.Spacing = 6;
 			this.vbox1.Add (this.capturerhbox);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.capturerhbox]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.capturerhbox]));
 			w1.Position = 0;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.logodrawingarea = new global::Gtk.DrawingArea ();
 			this.logodrawingarea.Name = "logodrawingarea";
 			this.vbox1.Add (this.logodrawingarea);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.logodrawingarea]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.logodrawingarea]));
 			w2.Position = 1;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.hbox2 = new global::Gtk.HBox ();
@@ -59,7 +51,7 @@ namespace LongoMatch.Gui
 			this.recbutton.Name = "recbutton";
 			this.recbutton.UseUnderline = true;
 			// Container child recbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w4 = new global::Gtk.HBox ();
 			w4.Spacing = 2;
@@ -73,7 +65,7 @@ namespace LongoMatch.Gui
 			w3.Add (w4);
 			this.recbutton.Add (w3);
 			this.buttonsbox.Add (this.recbutton);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.recbutton]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.recbutton]));
 			w11.Position = 0;
 			w11.Expand = false;
 			w11.Fill = false;
@@ -83,7 +75,7 @@ namespace LongoMatch.Gui
 			this.pausebutton.Name = "pausebutton";
 			this.pausebutton.UseUnderline = true;
 			// Container child pausebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w13 = new global::Gtk.HBox ();
 			w13.Spacing = 2;
@@ -97,7 +89,7 @@ namespace LongoMatch.Gui
 			w12.Add (w13);
 			this.pausebutton.Add (w12);
 			this.buttonsbox.Add (this.pausebutton);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.pausebutton]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.pausebutton]));
 			w20.Position = 1;
 			w20.Expand = false;
 			w20.Fill = false;
@@ -107,7 +99,7 @@ namespace LongoMatch.Gui
 			this.stopbutton.Name = "stopbutton";
 			this.stopbutton.UseUnderline = true;
 			// Container child stopbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w22 = new global::Gtk.HBox ();
 			w22.Spacing = 2;
@@ -121,27 +113,27 @@ namespace LongoMatch.Gui
 			w21.Add (w22);
 			this.stopbutton.Add (w21);
 			this.buttonsbox.Add (this.stopbutton);
-			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.stopbutton]));
+			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.stopbutton]));
 			w29.Position = 2;
 			w29.Expand = false;
 			w29.Fill = false;
 			this.hbox2.Add (this.buttonsbox);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.buttonsbox]));
+			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.buttonsbox]));
 			w30.Position = 0;
 			w30.Expand = false;
 			w30.Fill = false;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.timelabel = new global::Gtk.Label ();
 			this.timelabel.Name = "timelabel";
-			this.timelabel.Xalign = 1f;
+			this.timelabel.Xalign = 1F;
 			this.timelabel.LabelProp = "Time: 0:00:00";
 			this.hbox2.Add (this.timelabel);
-			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.timelabel]));
+			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.timelabel]));
 			w31.PackType = ((global::Gtk.PackType)(1));
 			w31.Position = 1;
 			w31.Expand = false;
 			this.vbox1.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox2]));
+			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox2]));
 			w32.Position = 2;
 			w32.Expand = false;
 			w32.Fill = false;
diff --git a/CesarPlayer/gtk-gui/LongoMatch.Gui.PlayerBin.cs b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
similarity index 92%
rename from CesarPlayer/gtk-gui/LongoMatch.Gui.PlayerBin.cs
rename to LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
index cf1eaf0..9a17a4e 100644
--- a/CesarPlayer/gtk-gui/LongoMatch.Gui.PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
@@ -5,39 +5,23 @@ namespace LongoMatch.Gui
 	public partial class PlayerBin
 	{
 		private global::Gtk.HBox mainbox;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.HBox videobox;
-
 		private global::Gtk.HBox controlsbox;
-
 		private global::Gtk.HBox buttonsbox;
-
 		private global::Gtk.Button closebutton;
-
 		private global::Gtk.Button drawbutton;
-
 		private global::Gtk.Button playbutton;
-
 		private global::Gtk.Button pausebutton;
-
 		private global::Gtk.Button prevbutton;
-
 		private global::Gtk.Button nextbutton;
-
 		private global::Gtk.Label tlabel;
-
 		private global::Gtk.HScale timescale;
-
 		private global::Gtk.Label timelabel;
-
 		private global::Gtk.Button volumebutton;
-
 		private global::Gtk.VBox vbox3;
-
 		private global::Gtk.VScale vscale1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -57,7 +41,7 @@ namespace LongoMatch.Gui
 			this.videobox.Name = "videobox";
 			this.videobox.Spacing = 6;
 			this.vbox2.Add (this.videobox);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.videobox]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.videobox]));
 			w1.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.controlsbox = new global::Gtk.HBox ();
@@ -72,7 +56,7 @@ namespace LongoMatch.Gui
 			this.closebutton.Name = "closebutton";
 			this.closebutton.UseUnderline = true;
 			// Container child closebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w3 = new global::Gtk.HBox ();
 			w3.Spacing = 2;
@@ -86,7 +70,7 @@ namespace LongoMatch.Gui
 			w2.Add (w3);
 			this.closebutton.Add (w2);
 			this.buttonsbox.Add (this.closebutton);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.closebutton]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.closebutton]));
 			w10.Position = 0;
 			w10.Expand = false;
 			w10.Fill = false;
@@ -95,7 +79,7 @@ namespace LongoMatch.Gui
 			this.drawbutton.Name = "drawbutton";
 			this.drawbutton.UseUnderline = true;
 			// Container child drawbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w11 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w11 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w12 = new global::Gtk.HBox ();
 			w12.Spacing = 2;
@@ -109,7 +93,7 @@ namespace LongoMatch.Gui
 			w11.Add (w12);
 			this.drawbutton.Add (w11);
 			this.buttonsbox.Add (this.drawbutton);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.drawbutton]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.drawbutton]));
 			w19.Position = 1;
 			w19.Expand = false;
 			w19.Fill = false;
@@ -119,7 +103,7 @@ namespace LongoMatch.Gui
 			this.playbutton.UseUnderline = true;
 			this.playbutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			// Container child playbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w20 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w20 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w21 = new global::Gtk.HBox ();
 			w21.Spacing = 2;
@@ -133,7 +117,7 @@ namespace LongoMatch.Gui
 			w20.Add (w21);
 			this.playbutton.Add (w20);
 			this.buttonsbox.Add (this.playbutton);
-			global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.playbutton]));
+			global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.playbutton]));
 			w28.Position = 2;
 			w28.Expand = false;
 			w28.Fill = false;
@@ -143,7 +127,7 @@ namespace LongoMatch.Gui
 			this.pausebutton.UseUnderline = true;
 			this.pausebutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			// Container child pausebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w29 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w29 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w30 = new global::Gtk.HBox ();
 			w30.Spacing = 2;
@@ -157,7 +141,7 @@ namespace LongoMatch.Gui
 			w29.Add (w30);
 			this.pausebutton.Add (w29);
 			this.buttonsbox.Add (this.pausebutton);
-			global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.pausebutton]));
+			global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.pausebutton]));
 			w37.Position = 3;
 			w37.Expand = false;
 			w37.Fill = false;
@@ -167,7 +151,7 @@ namespace LongoMatch.Gui
 			this.prevbutton.UseUnderline = true;
 			this.prevbutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			// Container child prevbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w38 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w38 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w39 = new global::Gtk.HBox ();
 			w39.Spacing = 2;
@@ -181,7 +165,7 @@ namespace LongoMatch.Gui
 			w38.Add (w39);
 			this.prevbutton.Add (w38);
 			this.buttonsbox.Add (this.prevbutton);
-			global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.prevbutton]));
+			global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.prevbutton]));
 			w46.Position = 4;
 			w46.Expand = false;
 			w46.Fill = false;
@@ -192,7 +176,7 @@ namespace LongoMatch.Gui
 			this.nextbutton.UseUnderline = true;
 			this.nextbutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			// Container child nextbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w47 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w47 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w48 = new global::Gtk.HBox ();
 			w48.Spacing = 2;
@@ -206,12 +190,12 @@ namespace LongoMatch.Gui
 			w47.Add (w48);
 			this.nextbutton.Add (w47);
 			this.buttonsbox.Add (this.nextbutton);
-			global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.buttonsbox[this.nextbutton]));
+			global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.buttonsbox [this.nextbutton]));
 			w55.Position = 5;
 			w55.Expand = false;
 			w55.Fill = false;
 			this.controlsbox.Add (this.buttonsbox);
-			global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.controlsbox[this.buttonsbox]));
+			global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.controlsbox [this.buttonsbox]));
 			w56.Position = 0;
 			w56.Expand = false;
 			w56.Fill = false;
@@ -220,7 +204,7 @@ namespace LongoMatch.Gui
 			this.tlabel.Name = "tlabel";
 			this.tlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Time:");
 			this.controlsbox.Add (this.tlabel);
-			global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.controlsbox[this.tlabel]));
+			global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.controlsbox [this.tlabel]));
 			w57.Position = 1;
 			w57.Expand = false;
 			w57.Fill = false;
@@ -236,13 +220,13 @@ namespace LongoMatch.Gui
 			this.timescale.Digits = 0;
 			this.timescale.ValuePos = ((global::Gtk.PositionType)(2));
 			this.controlsbox.Add (this.timescale);
-			global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.controlsbox[this.timescale]));
+			global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.controlsbox [this.timescale]));
 			w58.Position = 2;
 			// Container child controlsbox.Gtk.Box+BoxChild
 			this.timelabel = new global::Gtk.Label ();
 			this.timelabel.Name = "timelabel";
 			this.controlsbox.Add (this.timelabel);
-			global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.controlsbox[this.timelabel]));
+			global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.controlsbox [this.timelabel]));
 			w59.Position = 3;
 			w59.Expand = false;
 			// Container child controlsbox.Gtk.Box+BoxChild
@@ -251,7 +235,7 @@ namespace LongoMatch.Gui
 			this.volumebutton.UseUnderline = true;
 			this.volumebutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			// Container child volumebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w60 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w60 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w61 = new global::Gtk.HBox ();
 			w61.Spacing = 2;
@@ -265,16 +249,16 @@ namespace LongoMatch.Gui
 			w60.Add (w61);
 			this.volumebutton.Add (w60);
 			this.controlsbox.Add (this.volumebutton);
-			global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox[this.volumebutton]));
+			global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox [this.volumebutton]));
 			w68.Position = 4;
 			w68.Expand = false;
 			w68.Fill = false;
 			this.vbox2.Add (this.controlsbox);
-			global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.controlsbox]));
+			global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.controlsbox]));
 			w69.Position = 1;
 			w69.Expand = false;
 			this.mainbox.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w70 = ((global::Gtk.Box.BoxChild)(this.mainbox[this.vbox2]));
+			global::Gtk.Box.BoxChild w70 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox2]));
 			w70.Position = 0;
 			// Container child mainbox.Gtk.Box+BoxChild
 			this.vbox3 = new global::Gtk.VBox ();
@@ -297,10 +281,10 @@ namespace LongoMatch.Gui
 			this.vscale1.Digits = 0;
 			this.vscale1.ValuePos = ((global::Gtk.PositionType)(3));
 			this.vbox3.Add (this.vscale1);
-			global::Gtk.Box.BoxChild w71 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.vscale1]));
+			global::Gtk.Box.BoxChild w71 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.vscale1]));
 			w71.Position = 0;
 			this.mainbox.Add (this.vbox3);
-			global::Gtk.Box.BoxChild w72 = ((global::Gtk.Box.BoxChild)(this.mainbox[this.vbox3]));
+			global::Gtk.Box.BoxChild w72 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox3]));
 			w72.Position = 1;
 			w72.Expand = false;
 			w72.Fill = false;
diff --git a/CesarPlayer/gtk-gui/LongoMatch.Gui.VolumeWindow.cs b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VolumeWindow.cs
similarity index 96%
rename from CesarPlayer/gtk-gui/LongoMatch.Gui.VolumeWindow.cs
rename to LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VolumeWindow.cs
index 8857840..dec2637 100644
--- a/CesarPlayer/gtk-gui/LongoMatch.Gui.VolumeWindow.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VolumeWindow.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui
 	public partial class VolumeWindow
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Button morebutton;
-
 		private global::Gtk.VScale volumescale;
-
 		private global::Gtk.Button lessbutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -32,7 +29,7 @@ namespace LongoMatch.Gui
 			this.morebutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			this.morebutton.Label = "+";
 			this.vbox2.Add (this.morebutton);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.morebutton]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.morebutton]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
@@ -49,7 +46,7 @@ namespace LongoMatch.Gui
 			this.volumescale.Digits = 0;
 			this.volumescale.ValuePos = ((global::Gtk.PositionType)(2));
 			this.vbox2.Add (this.volumescale);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.volumescale]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.volumescale]));
 			w2.Position = 1;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.lessbutton = new global::Gtk.Button ();
@@ -57,7 +54,7 @@ namespace LongoMatch.Gui
 			this.lessbutton.Relief = ((global::Gtk.ReliefStyle)(2));
 			this.lessbutton.Label = "-";
 			this.vbox2.Add (this.lessbutton);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.lessbutton]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.lessbutton]));
 			w3.Position = 2;
 			w3.Expand = false;
 			w3.Fill = false;
diff --git a/CesarPlayer/gtk-gui/generated.cs b/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
similarity index 93%
rename from CesarPlayer/gtk-gui/generated.cs
rename to LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
index 559a39e..a6e0af4 100644
--- a/CesarPlayer/gtk-gui/generated.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
@@ -5,21 +5,20 @@ namespace Stetic
 	internal class Gui
 	{
 		private static bool initialized;
-
-		static internal void Initialize (Gtk.Widget iconRenderer)
+        
+		internal static void Initialize (Gtk.Widget iconRenderer)
 		{
 			if ((Stetic.Gui.initialized == false)) {
 				Stetic.Gui.initialized = true;
 			}
 		}
 	}
-
+    
 	internal class BinContainer
 	{
 		private Gtk.Widget child;
-
 		private Gtk.UIManager uimanager;
-
+        
 		public static BinContainer Attach (Gtk.Bin bin)
 		{
 			BinContainer bc = new BinContainer ();
@@ -28,32 +27,32 @@ namespace Stetic
 			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
 			return bc;
 		}
-
+        
 		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
 		{
 			if ((this.child != null)) {
 				args.Requisition = this.child.SizeRequest ();
 			}
 		}
-
+        
 		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
 		{
 			if ((this.child != null)) {
 				this.child.Allocation = args.Allocation;
 			}
 		}
-
+        
 		private void OnAdded (object sender, Gtk.AddedArgs args)
 		{
 			this.child = args.Widget;
 		}
-
+        
 		public void SetUiManager (Gtk.UIManager uim)
 		{
 			this.uimanager = uim;
 			this.child.Realized += new System.EventHandler (this.OnRealized);
 		}
-
+        
 		private void OnRealized (object sender, System.EventArgs args)
 		{
 			if ((this.uimanager != null)) {
@@ -66,7 +65,7 @@ namespace Stetic
 			}
 		}
 	}
-
+    
 	internal class IconLoader
 	{
 		public static Gdk.Pixbuf LoadIcon (Gtk.Widget widget, string name, Gtk.IconSize size)
@@ -77,7 +76,7 @@ namespace Stetic
 			} else {
 				int sz;
 				int sy;
-				global::Gtk.Icon.SizeLookup (size, out sz, out sy);
+				global::Gtk.Icon.SizeLookup (size, out  sz, out  sy);
 				try {
 					return Gtk.IconTheme.Default.LoadIcon (name, sz, 0);
 				} catch (System.Exception) {
@@ -100,14 +99,14 @@ namespace Stetic
 			}
 		}
 	}
-
+    
 	internal class ActionGroups
 	{
 		public static Gtk.ActionGroup GetActionGroup (System.Type type)
 		{
 			return Stetic.ActionGroups.GetActionGroup (type.FullName);
 		}
-
+        
 		public static Gtk.ActionGroup GetActionGroup (string name)
 		{
 			return null;
diff --git a/CesarPlayer/gtk-gui/gui.stetic b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
similarity index 98%
rename from CesarPlayer/gtk-gui/gui.stetic
rename to LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
index 1421d4b..edd1885 100644
--- a/CesarPlayer/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
@@ -5,7 +5,9 @@
     <target-gtk-version>2.12</target-gtk-version>
   </configuration>
   <import>
-    <widget-library name="../bin/Release/CesarPlayer.dll" internal="true" />
+    <widget-library name="../../bin/LongoMatch.Multimedia.dll" />
+    <widget-library name="../../bin/LongoMatch.Core.dll" />
+    <widget-library name="../../bin/LongoMatch.GUI.Multimedia.dll" internal="true" />
   </import>
   <widget class="Gtk.Window" id="LongoMatch.Gui.VolumeWindow" design-size="31 204">
     <property name="MemberName" />
diff --git a/CesarPlayer/gtk-gui/objects.xml b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
similarity index 99%
rename from CesarPlayer/gtk-gui/objects.xml
rename to LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
index 8946adc..7556235 100644
--- a/CesarPlayer/gtk-gui/objects.xml
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
@@ -20,11 +20,11 @@
         <signal name="SegmentClosedEvent" />
         <signal name="Tick" />
         <signal name="Error" />
+        <signal name="PlayStateChanged" />
         <signal name="Next" />
         <signal name="Prev" />
         <signal name="DrawFrame" />
         <signal name="SeekEvent" />
-        <signal name="PlayStateChanged" />
       </itemgroup>
     </signals>
   </object>
diff --git a/LongoMatch/Gui/Component/ButtonsWidget.cs b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
similarity index 96%
rename from LongoMatch/Gui/Component/ButtonsWidget.cs
rename to LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
index d18b169..8414975 100644
--- a/LongoMatch/Gui/Component/ButtonsWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
@@ -38,9 +38,9 @@ namespace LongoMatch.Gui.Component
 		private TagMode tagMode;
 		private Dictionary<Widget, Category> buttonsDic;
 
-		public event NewMarkEventHandler NewMarkEvent;
-		public event NewMarkStartHandler NewMarkStartEvent;
-		public event NewMarkStopHandler NewMarkStopEvent;
+		public event NewTagHandler NewMarkEvent;
+		public event NewTagStartHandler NewMarkStartEvent;
+		public event NewTagStopHandler NewMarkStopEvent;
 
 
 		public ButtonsWidget()
diff --git a/LongoMatch/Gui/Component/CategoriesScale.cs b/LongoMatch.GUI/Gui/Component/CategoriesScale.cs
similarity index 100%
rename from LongoMatch/Gui/Component/CategoriesScale.cs
rename to LongoMatch.GUI/Gui/Component/CategoriesScale.cs
diff --git a/LongoMatch/Gui/Component/CategoriesTemplateEditor.cs b/LongoMatch.GUI/Gui/Component/CategoriesTemplateEditor.cs
similarity index 96%
rename from LongoMatch/Gui/Component/CategoriesTemplateEditor.cs
rename to LongoMatch.GUI/Gui/Component/CategoriesTemplateEditor.cs
index fcfd06d..6589b3c 100644
--- a/LongoMatch/Gui/Component/CategoriesTemplateEditor.cs
+++ b/LongoMatch.GUI/Gui/Component/CategoriesTemplateEditor.cs
@@ -16,19 +16,14 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 
-using System;
 using System.Collections.Generic;
-using System.IO;
-using Gdk;
 using Gtk;
 using Mono.Unix;
-using Stetic;
-using LongoMatch.Common;
 using LongoMatch.Gui.Dialog;
 using LongoMatch.Interfaces;
-using LongoMatch.IO;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
+
 namespace LongoMatch.Gui.Component
 {
 	public class CategoriesTemplateEditorWidget: TemplatesEditorWidget<Categories, Category> 
@@ -36,7 +31,7 @@ namespace LongoMatch.Gui.Component
 		private CategoriesTreeView categoriestreeview;
 		private List<HotKey> hkList;
 
-		public CategoriesTemplateEditorWidget (): base()
+		public CategoriesTemplateEditorWidget (ITemplateProvider<Categories, Category> provider): base(provider)
 		{
 			hkList = new List<HotKey>();
 			categoriestreeview = new CategoriesTreeView();
diff --git a/LongoMatch/Gui/Component/CategoryProperties.cs b/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
similarity index 94%
rename from LongoMatch/Gui/Component/CategoryProperties.cs
rename to LongoMatch.GUI/Gui/Component/CategoryProperties.cs
index 0a40b3d..109e160 100644
--- a/LongoMatch/Gui/Component/CategoryProperties.cs
+++ b/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
@@ -26,7 +26,6 @@ using Mono.Unix;
 
 using LongoMatch.Common;
 using LongoMatch.Interfaces;
-using LongoMatch.Services;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
 using LongoMatch.Gui.Dialog;
@@ -53,11 +52,20 @@ namespace LongoMatch.Gui.Component
 			this.Build();
 			subcategoriestreeview1.SubCategoriesDeleted += OnSubcategoriesDeleted;
 			subcategoriestreeview1.SubCategorySelected += OnSubcategorySelected;
-			subcategoriesTemplates = MainClass.ts.SubCategoriesTemplateProvider;
-			LoadSubcategories();
 		}
 		
-		private void LoadSubcategories() {
+		public ITemplateProvider<SubCategoryTemplate, string> Template {
+			set {
+				subcategoriesTemplates = value;
+			}
+		}
+		public List<PlayerSubCategory> PlayerSubcategories{
+			set{
+				LoadSubcategories(value);
+			}
+		}
+		
+		private void LoadSubcategories(List<PlayerSubCategory> playerSubcategories) {
 			model = new ListStore(typeof(string), typeof(ISubCategory));
 			
 			model.AppendValues(Catalog.GetString("Create new..."), "");
@@ -68,7 +76,7 @@ namespace LongoMatch.Gui.Component
 				                                 subcat.Name),
 				                   subcat);
 			}
-			foreach (PlayerSubCategory subcat in MainClass.ts.PlayerSubcategories) {
+			foreach (PlayerSubCategory subcat in playerSubcategories) {
 				Log.Debug("Adding player subcategory: ", subcat.Name);
 				model.AppendValues(String.Format("[{0}] {1}", 
 				                                 Catalog.GetString("Players"),
@@ -126,7 +134,7 @@ namespace LongoMatch.Gui.Component
 		}
 		
 		private TagSubCategory EditSubCategoryTags (TagSubCategory template, bool checkName){
-			SubCategoryTagsEditor se =  new SubCategoryTagsEditor(template);
+			SubCategoryTagsEditor se =  new SubCategoryTagsEditor(template, subcategoriesTemplates.TemplatesNames);
 			
 			se.CheckName = checkName;
 			int ret = se.Run();
diff --git a/LongoMatch/Gui/Component/DrawingToolBox.cs b/LongoMatch.GUI/Gui/Component/DrawingToolBox.cs
similarity index 99%
rename from LongoMatch/Gui/Component/DrawingToolBox.cs
rename to LongoMatch.GUI/Gui/Component/DrawingToolBox.cs
index 8c4c27b..c0cae4a 100644
--- a/LongoMatch/Gui/Component/DrawingToolBox.cs
+++ b/LongoMatch.GUI/Gui/Component/DrawingToolBox.cs
@@ -20,6 +20,7 @@ using System;
 using Gtk;
 using Gdk;
 using LongoMatch.Handlers;
+using LongoMatch.Common;
 
 namespace LongoMatch.Gui.Component
 {
diff --git a/LongoMatch/Gui/Component/DrawingWidget.cs b/LongoMatch.GUI/Gui/Component/DrawingWidget.cs
similarity index 98%
rename from LongoMatch/Gui/Component/DrawingWidget.cs
rename to LongoMatch.GUI/Gui/Component/DrawingWidget.cs
index 586c938..0e4ba50 100644
--- a/LongoMatch/Gui/Component/DrawingWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/DrawingWidget.cs
@@ -20,22 +20,11 @@ using System;
 using Gdk;
 using Gtk;
 using Cairo;
+using LongoMatch.Common;
 
 
 namespace LongoMatch.Gui.Component
 {
-	public enum DrawTool {
-		PEN,
-		LINE,
-		DASHED_LINE,
-		CIRCLE,
-		DASHED_CIRCLE,
-		RECTANGLE,
-		DASHED_RECTANGLE,
-		CROSS,
-		DASHED_CROSS,
-		ERASER
-	}
 
 	[System.ComponentModel.ToolboxItem(true)]
 	public partial class DrawingWidget : Gtk.Bin
diff --git a/LongoMatch/Gui/Component/NotesWidget.cs b/LongoMatch.GUI/Gui/Component/NotesWidget.cs
similarity index 100%
rename from LongoMatch/Gui/Component/NotesWidget.cs
rename to LongoMatch.GUI/Gui/Component/NotesWidget.cs
diff --git a/LongoMatch.GUI/Gui/Component/PlayListWidget.cs b/LongoMatch.GUI/Gui/Component/PlayListWidget.cs
new file mode 100644
index 0000000..48108cf
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/PlayListWidget.cs
@@ -0,0 +1,123 @@
+// PlayListWidget.cs
+//
+//  Copyright (C) 2007-2009 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+//Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//
+
+using System;
+using Gtk;
+using LongoMatch.Common;
+using LongoMatch.Handlers;
+using LongoMatch.Store;
+using LongoMatch.Interfaces;
+
+
+namespace LongoMatch.Gui.Component
+{
+
+	[System.ComponentModel.Category("LongoMatch")]
+	[System.ComponentModel.ToolboxItem(true)]
+	public partial class PlayListWidget : Gtk.Bin, IPlaylistWidget
+	{
+		public event PlayListNodeSelectedHandler PlayListNodeSelected;
+		public event ApplyCurrentRateHandler ApplyCurrentRate;
+		public event NewJobHandler NewRenderingJob;
+		public event OpenPlaylistHandler OpenPlaylistEvent;
+		public event NewPlaylistHandler NewPlaylistEvent;
+		public event SavePlaylistHandler SavePlaylistEvent;
+		public event RenderPlaylistHandler RenderPlaylistEvent;
+		
+		public PlayListWidget()
+		{
+			this.Build();
+			playlisttreeview1.Reorderable = true;
+			playlisttreeview1.RowActivated += OnPlaylisttreeview1RowActivated;
+			playlisttreeview1.ApplyCurrentRate += OnApplyRate;
+			savebutton.Sensitive = false;
+
+			newbutton.CanFocus = false;
+			openbutton.CanFocus = false;
+			savebutton.CanFocus = false;
+			newvideobutton.CanFocus = false;
+		}
+
+		public void Load(IPlayList playlist) {
+			label1.Visible = false;
+			newvideobutton.Show();
+			playlisttreeview1.PlayList = playlist;
+			playlisttreeview1.Sensitive = true;
+			savebutton.Sensitive = true;
+			Model = playlist.GetModel();
+		}
+
+		public ListStore Model {
+			set {
+				playlisttreeview1.Model = value;
+			}
+			get {
+				return (ListStore)playlisttreeview1.Model;
+			}
+		}
+
+		public void Add(PlayListPlay plNode) {
+			Model.AppendValues(plNode);
+		}
+		
+		public void SetActivePlay (PlayListPlay plNode, int index) {
+			playlisttreeview1.Selection.SelectPath(new TreePath(index.ToString()));
+			playlisttreeview1.LoadedPlay = plNode;
+		}
+
+		protected virtual void OnPlaylisttreeview1RowActivated(object o, Gtk.RowActivatedArgs args)
+		{
+			if (PlayListNodeSelected != null) {
+				TreeIter iter;
+				Model.GetIterFromString(out iter, args.Path.ToString());
+				PlayListNodeSelected(Model.GetValue(iter, 0) as PlayListPlay);
+			}
+		}
+		
+		protected virtual void OnApplyRate(PlayListPlay plNode) {
+			if(ApplyCurrentRate != null)
+				ApplyCurrentRate(plNode);
+		}
+		
+		protected virtual void OnSavebuttonClicked(object sender, System.EventArgs e)
+		{
+			if (SavePlaylistEvent != null)
+				SavePlaylistEvent();
+		}
+
+		protected virtual void OnOpenbuttonClicked(object sender, System.EventArgs e)
+		{
+			if (OpenPlaylistEvent != null)
+				OpenPlaylistEvent();
+		}
+
+		protected virtual void OnNewbuttonClicked(object sender, System.EventArgs e)
+		{
+			if (NewPlaylistEvent != null)
+				NewPlaylistEvent();
+		}
+		
+		protected virtual void OnNewvideobuttonClicked(object sender, System.EventArgs e)
+		{
+			if (RenderPlaylistEvent != null)
+				RenderPlaylistEvent();
+		}
+	}
+}
diff --git a/LongoMatch/Gui/Component/PlayerProperties.cs b/LongoMatch.GUI/Gui/Component/PlayerProperties.cs
similarity index 100%
rename from LongoMatch/Gui/Component/PlayerProperties.cs
rename to LongoMatch.GUI/Gui/Component/PlayerProperties.cs
diff --git a/LongoMatch/Gui/Component/PlayersListTreeWidget.cs b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
similarity index 97%
rename from LongoMatch/Gui/Component/PlayersListTreeWidget.cs
rename to LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
index 24eb24e..32be788 100644
--- a/LongoMatch/Gui/Component/PlayersListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
@@ -32,7 +32,7 @@ namespace LongoMatch.Gui.Component
 	public partial class PlayersListTreeWidget : Gtk.Bin
 	{
 
-		public event TimeNodeSelectedHandler TimeNodeSelected;
+		public event PlaySelectedHandler TimeNodeSelected;
 		public event TimeNodeChangedHandler TimeNodeChanged;
 		public event PlayListNodeAddedHandler PlayListNodeAdded;
 		public event SnapshotSeriesHandler SnapshotSeriesEvent;
diff --git a/LongoMatch/Gui/Component/PlayersTaggerWidget.cs b/LongoMatch.GUI/Gui/Component/PlayersTaggerWidget.cs
similarity index 100%
rename from LongoMatch/Gui/Component/PlayersTaggerWidget.cs
rename to LongoMatch.GUI/Gui/Component/PlayersTaggerWidget.cs
diff --git a/LongoMatch/Gui/Component/PlaysListTreeWidget.cs b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
similarity index 95%
rename from LongoMatch/Gui/Component/PlaysListTreeWidget.cs
rename to LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
index 8ec6f8f..cb6ef4f 100644
--- a/LongoMatch/Gui/Component/PlaysListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
@@ -22,13 +22,10 @@ using System;
 using System.Collections.Generic;
 using Gtk;
 using Mono.Unix;
-using LongoMatch.DB;
 using LongoMatch.Gui.Dialog;
 using LongoMatch.Handlers;
 using LongoMatch.Store;
-using LongoMatch.Services.JobsManager;
 using LongoMatch.Common;
-using LongoMatch.Playlist;
 
 namespace LongoMatch.Gui.Component
 {
@@ -39,13 +36,13 @@ namespace LongoMatch.Gui.Component
 	public partial class PlaysListTreeWidget : Gtk.Bin
 	{
 
-		public event TimeNodeSelectedHandler TimeNodeSelected;
+		public event PlaySelectedHandler TimeNodeSelected;
 		public event TimeNodeChangedHandler TimeNodeChanged;
-		public event TimeNodeDeletedHandler TimeNodeDeleted;
+		public event PlaysDeletedHandler TimeNodeDeleted;
 		public event PlayListNodeAddedHandler PlayListNodeAdded;
 		public event SnapshotSeriesHandler SnapshotSeriesEvent;
 		public event TagPlayHandler TagPlay;
-		public event JobHandler NewRenderingJob;
+		public event NewJobHandler NewRenderingJob;
 
 		private Project project;
 
@@ -197,9 +194,10 @@ namespace LongoMatch.Gui.Component
 				playlist.Add(new PlayListPlay((Play)treeview.Model.GetValue(iter, 0),
 				                              project.Description.File, 1, true));
 			}
+			/* FIXME
 			job = GuiUtils.ConfigureRenderingJob(playlist, this);
 			if (job != null && NewRenderingJob != null)
-					NewRenderingJob(job);
+					NewRenderingJob(job); */
 		}
 	}
 }
diff --git a/LongoMatch/Gui/Component/ProjectDetailsWidget.cs b/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
similarity index 92%
rename from LongoMatch/Gui/Component/ProjectDetailsWidget.cs
rename to LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
index 8402942..696a146 100644
--- a/LongoMatch/Gui/Component/ProjectDetailsWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
@@ -25,12 +25,9 @@ using LongoMatch.Common;
 using LongoMatch.Gui.Dialog;
 using LongoMatch.Gui.Popup;
 using LongoMatch.Handlers;
-using LongoMatch.IO;
 using LongoMatch.Interfaces;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
-using LongoMatch.Video.Capturer;
-using LongoMatch.Video.Common;
 using LongoMatch.Video.Utils;
 using Mono.Unix;
 
@@ -43,21 +40,23 @@ namespace LongoMatch.Gui.Component
 	public partial class ProjectDetailsWidget : Gtk.Bin
 	{
 		public event EventHandler EditedEvent;
-		private Project project;
-		private LongoMatch.Video.Utils.PreviewMediaFile mFile;
-		private bool edited;
-		private DateTime date;
-		private CalendarPopup cp;
-		private Win32CalendarDialog win32CP;
-		private Categories actualCategory;
-		private TeamTemplate actualVisitorTeam;
-		private TeamTemplate actualLocalTeam;
-		private ITemplateProvider<Categories, Category> tpc;
-		private ITemplateProvider<TeamTemplate, Player> tpt;
-		private ProjectType useType;
-		private List<Device> videoDevices;
-		private ListStore videoStandardList;
-		private ListStore encProfileList;
+		Project project;
+		MediaFile mFile;
+		bool edited;
+		DateTime date;
+		CalendarPopup cp;
+		Win32CalendarDialog win32CP;
+		Categories actualCategory;
+		TeamTemplate actualVisitorTeam;
+		TeamTemplate actualLocalTeam;
+		ITemplateProvider<Categories, Category> tpc;
+		ITemplateProvider<TeamTemplate, Player> tpt;
+		ITemplateWidget<Categories, Category> twc;
+		ITemplateWidget<TeamTemplate, Player> twt;
+		ProjectType useType;
+		List<Device> videoDevices;
+		ListStore videoStandardList;
+		ListStore encProfileList;
 		private const string DV_SOURCE = "DV Source";
 		private const string GCONF_SOURCE = "GConf Source";
 
@@ -73,18 +72,22 @@ namespace LongoMatch.Gui.Component
 				cp.DateSelectedEvent += new DateSelectedHandler(OnDateSelected);
 			}
 			
-			tpc = MainClass.ts.CategoriesTemplateProvider;
-			tpt = MainClass.ts.TeamTemplateProvider;
-
-			FillCategories();
-			FillTeamsTemplate();
 			FillFormats();
-
 			videoDevices = new List<Device>();
-
 			Use=ProjectType.FileProject;
 		}
-
+		
+		public ITemplatesService TemplatesService {
+			set {
+				tpc = value.CategoriesTemplateProvider;
+				tpt = value.TeamTemplateProvider;
+				twc = value.GetTemplateEditor<Categories, Category> ();
+				twt = value.GetTemplateEditor<TeamTemplate, Player>();
+				FillCategories();
+				FillTeamsTemplate();
+			}
+		}
+		
 		public ProjectType Use {
 			set {
 				bool visible1 = value == ProjectType.CaptureProject;
@@ -294,11 +297,11 @@ namespace LongoMatch.Gui.Component
 					return null;
 				else {
 					if(useType == ProjectType.FakeCaptureProject) {
-						mFile = new PreviewMediaFile();
+						mFile = new MediaFile();
 						mFile.FilePath = Constants.FAKE_PROJECT;
 						mFile.Fps = 25;
 					} else if(useType == ProjectType.CaptureProject) {
-						mFile = new PreviewMediaFile();
+						mFile = new MediaFile();
 						mFile.FilePath = fileEntry.Text;
 						mFile.Fps = 25;
 					}
@@ -438,7 +441,7 @@ namespace LongoMatch.Gui.Component
 				                                 FileChooserAction.Save,
 				                                 "gtk-cancel",ResponseType.Cancel,
 				                                 "gtk-save",ResponseType.Accept);
-				fChooser.SetCurrentFolder(MainClass.VideosDir());
+				fChooser.SetCurrentFolder(Config.VideosDir());
 				fChooser.DoOverwriteConfirmation = true;
 				if(fChooser.Run() == (int)ResponseType.Accept)
 					fileEntry.Text = fChooser.Filename;
@@ -474,7 +477,7 @@ namespace LongoMatch.Gui.Component
 						                       Catalog.GetString("Analyzing video file:")+"\n"+filename);
 						md.Icon=Stetic.IconLoader.LoadIcon(this, "longomatch", Gtk.IconSize.Dialog);
 						md.Show();
-						mFile = LongoMatch.Video.Utils.PreviewMediaFile.GetMediaFile(filename);
+						mFile = PreviewMediaFile.DiscoverFile(filename);
 						if(!mFile.HasVideo || mFile.VideoCodec == "")
 							throw new Exception(Catalog.GetString("This file doesn't contain a video stream."));
 						if(mFile.HasVideo && mFile.Length == 0)
@@ -528,7 +531,7 @@ namespace LongoMatch.Gui.Component
 
 		protected virtual void OnEditbuttonClicked(object sender, System.EventArgs e)
 		{
-			var editor = new TemplateEditorDialog<Categories, Category>();
+			var editor = new TemplateEditorDialog<Categories, Category>(twc);
 			editor.Template = Categories;
 			if (Use == ProjectType.EditProject) {
 				editor.Project = project;
@@ -538,7 +541,7 @@ namespace LongoMatch.Gui.Component
 		}
 
 		protected virtual void OnLocaltemplatebuttonClicked(object sender, System.EventArgs e) {
-			var editor = new TemplateEditorDialog<TeamTemplate, Player>();
+			var editor = new TemplateEditorDialog<TeamTemplate, Player>(twt);
 			editor.Template = LocalTeamTemplate;
 			if (Use == ProjectType.EditProject) {
 				editor.Project = project;
@@ -548,7 +551,7 @@ namespace LongoMatch.Gui.Component
 		}
 
 		protected virtual void OnVisitorbuttonClicked(object sender, System.EventArgs e) {
-			var editor = new TemplateEditorDialog<TeamTemplate, Player>();
+			var editor = new TemplateEditorDialog<TeamTemplate, Player>(twt);
 			editor.Template = VisitorTeamTemplate;
 			if (Use == ProjectType.EditProject) {
 				editor.Project = project;
diff --git a/LongoMatch/Gui/Component/ProjectListWidget.cs b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
similarity index 99%
rename from LongoMatch/Gui/Component/ProjectListWidget.cs
rename to LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
index dd7691b..a752040 100644
--- a/LongoMatch/Gui/Component/ProjectListWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
@@ -23,8 +23,6 @@ using System.Collections.Generic;
 using System.IO;
 using Mono.Unix;
 using Gtk;
-using Db4objects.Db4o;
-using LongoMatch.DB;
 using LongoMatch.Handlers;
 using LongoMatch.Store;
 using LongoMatch.Video.Utils;
diff --git a/LongoMatch/Gui/Component/RenderingStateBar.cs b/LongoMatch.GUI/Gui/Component/RenderingStateBar.cs
similarity index 100%
rename from LongoMatch/Gui/Component/RenderingStateBar.cs
rename to LongoMatch.GUI/Gui/Component/RenderingStateBar.cs
diff --git a/LongoMatch/Gui/Component/StringTaggerWidget.cs b/LongoMatch.GUI/Gui/Component/StringTaggerWidget.cs
similarity index 100%
rename from LongoMatch/Gui/Component/StringTaggerWidget.cs
rename to LongoMatch.GUI/Gui/Component/StringTaggerWidget.cs
diff --git a/LongoMatch/Gui/Component/TaggerWidget.cs b/LongoMatch.GUI/Gui/Component/TaggerWidget.cs
similarity index 100%
rename from LongoMatch/Gui/Component/TaggerWidget.cs
rename to LongoMatch.GUI/Gui/Component/TaggerWidget.cs
diff --git a/LongoMatch/Gui/Component/TagsTreeWidget.cs b/LongoMatch.GUI/Gui/Component/TagsTreeWidget.cs
similarity index 98%
rename from LongoMatch/Gui/Component/TagsTreeWidget.cs
rename to LongoMatch.GUI/Gui/Component/TagsTreeWidget.cs
index b291069..7ac7994 100644
--- a/LongoMatch/Gui/Component/TagsTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/TagsTreeWidget.cs
@@ -22,7 +22,6 @@ using System;
 using System.Collections.Generic;
 using Gtk;
 using Mono.Unix;
-using LongoMatch.DB;
 using LongoMatch.Handlers;
 using LongoMatch.Store;
 
@@ -50,7 +49,7 @@ namespace LongoMatch.Gui.Component
 	public partial class TagsTreeWidget : Gtk.Bin
 	{
 
-		public event TimeNodeSelectedHandler TimeNodeSelected;
+		public event PlaySelectedHandler TimeNodeSelected;
 		public event TimeNodeChangedHandler TimeNodeChanged;
 		public event PlayListNodeAddedHandler PlayListNodeAdded;
 		public event SnapshotSeriesHandler SnapshotSeriesEvent;
diff --git a/LongoMatch/Gui/Component/TeamTaggerWidget.cs b/LongoMatch.GUI/Gui/Component/TeamTaggerWidget.cs
similarity index 92%
rename from LongoMatch/Gui/Component/TeamTaggerWidget.cs
rename to LongoMatch.GUI/Gui/Component/TeamTaggerWidget.cs
index 4f09310..73dacb3 100644
--- a/LongoMatch/Gui/Component/TeamTaggerWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/TeamTaggerWidget.cs
@@ -26,10 +26,10 @@ namespace LongoMatch.Gui.Component
 	[System.ComponentModel.ToolboxItem(true)]
 	public partial class TeamTaggerWidget : Gtk.Bin
 	{
-		private Dictionary<TeamTag, CheckButton> dict;
-		private TeamSubCategory subcat;
-		private TeamsTagStore tags;
-		private string subcategory, localTeam, visitorTeam;
+		Dictionary<TeamTag, CheckButton> dict;
+		TeamSubCategory subcat;
+		TeamsTagStore tags;
+		string localTeam, visitorTeam;
 		
 		
 		public TeamTaggerWidget (TeamSubCategory subcat, TeamsTagStore tags, 
diff --git a/LongoMatch/Gui/Component/TeamTemplateEditor.cs b/LongoMatch.GUI/Gui/Component/TeamTemplateEditor.cs
similarity index 97%
rename from LongoMatch/Gui/Component/TeamTemplateEditor.cs
rename to LongoMatch.GUI/Gui/Component/TeamTemplateEditor.cs
index 0ba91c6..f197dfe 100644
--- a/LongoMatch/Gui/Component/TeamTemplateEditor.cs
+++ b/LongoMatch.GUI/Gui/Component/TeamTemplateEditor.cs
@@ -18,7 +18,6 @@
 
 using System;
 using System.Collections.Generic;
-using System.IO;
 using Gdk;
 using Gtk;
 using Mono.Unix;
@@ -26,9 +25,9 @@ using Stetic;
 using LongoMatch.Common;
 using LongoMatch.Gui.Dialog;
 using LongoMatch.Interfaces;
-using LongoMatch.IO;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
+
 namespace LongoMatch.Gui.Component
 {
 	public class TeamTemplateEditorWidget: TemplatesEditorWidget<TeamTemplate, Player>
@@ -38,7 +37,7 @@ namespace LongoMatch.Gui.Component
 		Gtk.Image shieldImage;
 		VBox box;
 		
-		public TeamTemplateEditorWidget () {
+		public TeamTemplateEditorWidget (ITemplateProvider<TeamTemplate, Player> provider): base(provider) {
 			treeview = new PlayerPropertiesTreeView(); 
 			treeview.PlayerClicked += this.OnPlayerClicked;
 			treeview.PlayersSelected += this.OnPlayersSelected;
diff --git a/LongoMatch/Gui/Component/TemplatesEditorBase.cs b/LongoMatch.GUI/Gui/Component/TemplatesEditorBase.cs
similarity index 97%
rename from LongoMatch/Gui/Component/TemplatesEditorBase.cs
rename to LongoMatch.GUI/Gui/Component/TemplatesEditorBase.cs
index 2e5f9ca..de3aa76 100644
--- a/LongoMatch/Gui/Component/TemplatesEditorBase.cs
+++ b/LongoMatch.GUI/Gui/Component/TemplatesEditorBase.cs
@@ -103,9 +103,9 @@ namespace LongoMatch.Gui.Component
 		protected List<U> selected;
 		protected ITemplateProvider<T, U> provider;
 		
-		public TemplatesEditorWidget (): base()
+		public TemplatesEditorWidget (ITemplateProvider<T, U> provider): base()
 		{
-			provider = MainClass.ts.GetTemplateProvider<T, U>();
+			this.provider = provider; 
 		}
 		
 		public abstract T Template {get; set;}
diff --git a/LongoMatch/Gui/Component/TimeLineWidget.cs b/LongoMatch.GUI/Gui/Component/TimeLineWidget.cs
similarity index 94%
rename from LongoMatch/Gui/Component/TimeLineWidget.cs
rename to LongoMatch.GUI/Gui/Component/TimeLineWidget.cs
index cf25361..5efd169 100644
--- a/LongoMatch/Gui/Component/TimeLineWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/TimeLineWidget.cs
@@ -32,9 +32,9 @@ namespace LongoMatch.Gui.Component {
 	{
 
 		public event TimeNodeChangedHandler TimeNodeChanged;
-		public event TimeNodeSelectedHandler TimeNodeSelected;
-		public event TimeNodeDeletedHandler TimeNodeDeleted;
-		public event NewMarkAtFrameEventHandler NewMarkEvent;
+		public event PlaySelectedHandler TimeNodeSelected;
+		public event PlaysDeletedHandler TimeNodeDeleted;
+		public event NewTagAtFrameHandler NewMarkEvent;
 		//public event PlayListNodeAddedHandler PlayListNodeAdded;
 
 		private Dictionary<Category,TimeScale> tsList;
@@ -165,9 +165,9 @@ namespace LongoMatch.Gui.Component {
 					TimeScale ts = new TimeScale(cat, playsList,frames);
 					tsList[cat] = ts;
 					ts.TimeNodeChanged += new TimeNodeChangedHandler(OnTimeNodeChanged);
-					ts.TimeNodeSelected += new TimeNodeSelectedHandler(OnTimeNodeSelected);
-					ts.TimeNodeDeleted += new TimeNodeDeletedHandler(OnTimeNodeDeleted);
-					ts.NewMarkAtFrameEvent += new NewMarkAtFrameEventHandler(OnNewMark);
+					ts.TimeNodeSelected += new PlaySelectedHandler(OnTimeNodeSelected);
+					ts.TimeNodeDeleted += new PlaysDeletedHandler(OnTimeNodeDeleted);
+					ts.NewMarkAtFrameEvent += new NewTagAtFrameHandler(OnNewMark);
 					vbox1.PackStart(ts,true,true,0);
 					ts.Show();
 				}
diff --git a/LongoMatch/Gui/Component/TimeReferenceWidget.cs b/LongoMatch.GUI/Gui/Component/TimeReferenceWidget.cs
similarity index 100%
rename from LongoMatch/Gui/Component/TimeReferenceWidget.cs
rename to LongoMatch.GUI/Gui/Component/TimeReferenceWidget.cs
diff --git a/LongoMatch/Gui/Component/TimeScale.cs b/LongoMatch.GUI/Gui/Component/TimeScale.cs
similarity index 98%
rename from LongoMatch/Gui/Component/TimeScale.cs
rename to LongoMatch.GUI/Gui/Component/TimeScale.cs
index d5a0f4f..36d7601 100644
--- a/LongoMatch/Gui/Component/TimeScale.cs
+++ b/LongoMatch.GUI/Gui/Component/TimeScale.cs
@@ -65,10 +65,10 @@ namespace LongoMatch.Gui.Component
 
 		private Pango.Layout layout;
 
-		public event NewMarkAtFrameEventHandler NewMarkAtFrameEvent;
+		public event NewTagAtFrameHandler NewMarkAtFrameEvent;
 		public event TimeNodeChangedHandler TimeNodeChanged;
-		public event TimeNodeSelectedHandler TimeNodeSelected;
-		public event TimeNodeDeletedHandler TimeNodeDeleted;
+		public event PlaySelectedHandler TimeNodeSelected;
+		public event PlaysDeletedHandler TimeNodeDeleted;
 
 
 		public TimeScale(Category category, List<Play> list, uint frames)
diff --git a/LongoMatch/Common/Cloner.cs b/LongoMatch.GUI/Gui/Dialog/About.cs
similarity index 51%
rename from LongoMatch/Common/Cloner.cs
rename to LongoMatch.GUI/Gui/Dialog/About.cs
index 7b00c09..1c7c8d4 100644
--- a/LongoMatch/Common/Cloner.cs
+++ b/LongoMatch.GUI/Gui/Dialog/About.cs
@@ -16,24 +16,32 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
-using System.IO;
+using System.Reflection;
+using Gtk;
 
 using LongoMatch.Common;
 
-namespace LongoMatch.Common
+namespace LongoMatch.Gui.Dialog
 {
-	public static class Cloner
+	public class AboutDialog: Gtk.AboutDialog
 	{
-		public static T Clone<T> (this T source) {
-			if (Object.ReferenceEquals(source, null))
-				return default(T);
-			
-			Stream s = new MemoryStream();
-			using (s) {
-				SerializableObject.Save<T>(source, s);
-				s.Seek(0, SeekOrigin.Begin);
-				return SerializableObject.Load<T>(s);
-			}
+		public AboutDialog ()
+		{
+			Version version = Assembly.GetExecutingAssembly().GetName().Version;
+			if(Environment.OSVersion.Platform == PlatformID.Unix)
+				ProgramName = Constants.SOFTWARE_NAME;
+			Version = String.Format("{0}.{1}.{2}",version.Major,version.Minor,version.Build);
+			Copyright = Constants.COPYRIGHT;
+			Website = Constants.WEBSITE;
+			License = Constants.LICENSE;
+			Authors = new string[] {"Andoni Morales Alastruey"};
+			Artists = new string[] {"Bencomo GonzÃlez Marrero"};
+			TranslatorCredits = Constants.TRANSLATORS;
+			SetUrlHook(delegate(Gtk.AboutDialog dialog, string url) {
+				try {
+					System.Diagnostics.Process.Start(url);
+				} catch {}
+			});
 		}
 	}
 }
diff --git a/LongoMatch/Gui/Dialog/BusyDialog.cs b/LongoMatch.GUI/Gui/Dialog/BusyDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/BusyDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/BusyDialog.cs
diff --git a/LongoMatch/Gui/Dialog/DrawingTool.cs b/LongoMatch.GUI/Gui/Dialog/DrawingTool.cs
similarity index 97%
rename from LongoMatch/Gui/Dialog/DrawingTool.cs
rename to LongoMatch.GUI/Gui/Dialog/DrawingTool.cs
index 14dae05..70a7423 100644
--- a/LongoMatch/Gui/Dialog/DrawingTool.cs
+++ b/LongoMatch.GUI/Gui/Dialog/DrawingTool.cs
@@ -20,6 +20,7 @@ using System;
 using Gdk;
 using Gtk;
 using Mono.Unix;
+using LongoMatch.Common;
 using LongoMatch.Gui.Component;
 using LongoMatch.Store;
 
@@ -29,8 +30,8 @@ namespace LongoMatch.Gui.Dialog
 
 	public partial class DrawingTool : Gtk.Dialog
 	{
-		private Play play;
-		private int stopTime;
+		Play play;
+		int stopTime;
 
 		public DrawingTool()
 		{
@@ -100,7 +101,7 @@ namespace LongoMatch.Gui.Dialog
 			                                 FileChooserAction.Save,
 			                                 "gtk-cancel",ResponseType.Cancel,
 			                                 "gtk-save",ResponseType.Accept);
-			fChooser.SetCurrentFolder(MainClass.SnapshotsDir());
+			fChooser.SetCurrentFolder(Config.SnapshotsDir());
 			fChooser.Filter = filter;
 			fChooser.DoOverwriteConfirmation = true;
 
diff --git a/LongoMatch/Gui/Dialog/EditCategoryDialog.cs b/LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/EditCategoryDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs
diff --git a/LongoMatch/Gui/Dialog/EditPlayerDialog.cs b/LongoMatch.GUI/Gui/Dialog/EditPlayerDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/EditPlayerDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/EditPlayerDialog.cs
diff --git a/LongoMatch/Gui/Dialog/EndCaptureDialog.cs b/LongoMatch.GUI/Gui/Dialog/EndCaptureDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/EndCaptureDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/EndCaptureDialog.cs
diff --git a/LongoMatch/Gui/Dialog/EntryDialog.cs b/LongoMatch.GUI/Gui/Dialog/EntryDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/EntryDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/EntryDialog.cs
diff --git a/LongoMatch/Gui/Dialog/FramesCaptureProgressDialog.cs b/LongoMatch.GUI/Gui/Dialog/FramesCaptureProgressDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/FramesCaptureProgressDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/FramesCaptureProgressDialog.cs
diff --git a/LongoMatch/Gui/Dialog/HotKeySelectorDialog.cs b/LongoMatch.GUI/Gui/Dialog/HotKeySelectorDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/HotKeySelectorDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/HotKeySelectorDialog.cs
diff --git a/LongoMatch/Gui/Dialog/NewProjectDialog.cs b/LongoMatch.GUI/Gui/Dialog/NewProjectDialog.cs
similarity index 92%
rename from LongoMatch/Gui/Dialog/NewProjectDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/NewProjectDialog.cs
index 1c3ad2d..ddbdd49 100644
--- a/LongoMatch/Gui/Dialog/NewProjectDialog.cs
+++ b/LongoMatch.GUI/Gui/Dialog/NewProjectDialog.cs
@@ -23,6 +23,7 @@ using LongoMatch.Common;
 using LongoMatch.Store;
 using LongoMatch.Video.Capturer;
 using LongoMatch.Video.Utils;
+using LongoMatch.Interfaces;
 
 namespace LongoMatch.Gui.Dialog
 {
@@ -64,5 +65,11 @@ namespace LongoMatch.Gui.Dialog
 				return fdwidget.CaptureSettings;
 			}
 		}
+		
+		public ITemplatesService TemplatesService {
+			set {
+				fdwidget.TemplatesService = value;
+			}
+		}
 	}
 }
diff --git a/LongoMatch/Gui/Dialog/OpenProjectDialog.cs b/LongoMatch.GUI/Gui/Dialog/OpenProjectDialog.cs
similarity index 93%
rename from LongoMatch/Gui/Dialog/OpenProjectDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/OpenProjectDialog.cs
index 08d4702..36c412b 100644
--- a/LongoMatch/Gui/Dialog/OpenProjectDialog.cs
+++ b/LongoMatch.GUI/Gui/Dialog/OpenProjectDialog.cs
@@ -33,7 +33,6 @@ namespace LongoMatch.Gui.Dialog
 		public OpenProjectDialog()
 		{
 			this.Build();
-			this.Fill();
 			projectlistwidget.SelectionMode = SelectionMode.Single;
 		}
 
@@ -42,8 +41,8 @@ namespace LongoMatch.Gui.Dialog
 			set;
 		}
 
-		public void Fill() {
-			projectlistwidget.Fill(MainClass.DB.GetAllProjects());
+		public void Fill(List<ProjectDescription> list) {
+			projectlistwidget.Fill(list);
 		}
 
 		protected virtual void OnProjectlistwidgetProjectsSelected(List<ProjectDescription> projects)
diff --git a/LongoMatch/Gui/Dialog/PlayersSelectionDialog.cs b/LongoMatch.GUI/Gui/Dialog/PlayersSelectionDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/PlayersSelectionDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/PlayersSelectionDialog.cs
diff --git a/LongoMatch/Gui/Dialog/ProjectSelectionDialog.cs b/LongoMatch.GUI/Gui/Dialog/ProjectSelectionDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/ProjectSelectionDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/ProjectSelectionDialog.cs
diff --git a/LongoMatch/Gui/Dialog/ProjectsManager.cs b/LongoMatch.GUI/Gui/Dialog/ProjectsManager.cs
similarity index 92%
rename from LongoMatch/Gui/Dialog/ProjectsManager.cs
rename to LongoMatch.GUI/Gui/Dialog/ProjectsManager.cs
index ea2d9ae..e1da773 100644
--- a/LongoMatch/Gui/Dialog/ProjectsManager.cs
+++ b/LongoMatch.GUI/Gui/Dialog/ProjectsManager.cs
@@ -22,6 +22,7 @@ using System;
 using System.Collections.Generic;
 using Gtk;
 using LongoMatch.Common;
+using LongoMatch.Interfaces;
 using LongoMatch.Store;
 using Mono.Unix;
 
@@ -33,21 +34,22 @@ namespace LongoMatch.Gui.Dialog
 	public partial class ProjectsManager : Gtk.Dialog
 	{
 
-		private Project openedProject;
-		private List<ProjectDescription> selectedProjects;
+		Project openedProject;
+		List<ProjectDescription> selectedProjects;
+		IDatabase DB;
+		string homeDir = null;
 
-		public ProjectsManager(Project openedProject)
+		public ProjectsManager(Project openedProject, IDatabase DB)
 		{
 			this.Build();
 			this.openedProject = openedProject;
-			this.Fill();
 			this.projectdetails.Use = ProjectType.EditProject;
+			this.DB = DB;
 			projectdetails.Edited = false;
 		}
 
 		public void Fill() {
-			List<ProjectDescription> projectsList = MainClass.DB.GetAllProjects();
-			projectlistwidget1.Fill(projectsList);
+			projectlistwidget1.Fill(DB.GetAllProjects());
 			projectlistwidget1.ClearSearch();
 			projectlistwidget1.SelectionMode = SelectionMode.Multiple;
 			Clear();
@@ -78,7 +80,7 @@ namespace LongoMatch.Gui.Dialog
 			if(project == null)
 				return;
 
-			MainClass.DB.UpdateProject(project);
+			DB.UpdateProject(project);
 			saveButton.Sensitive = false;
 			projectlistwidget1.QueueDraw();
 		}
@@ -105,7 +107,7 @@ namespace LongoMatch.Gui.Dialog
 				                                     Catalog.GetString("Do you really want to delete:")+
 				                                     "\n"+selectedProject.Title);
 				if(md.Run()== (int)ResponseType.Yes) {
-					MainClass.DB.RemoveProject(selectedProject.UUID);
+					DB.RemoveProject(selectedProject.UUID);
 					deletedProjects.Add(selectedProject);
 				}
 				md.Destroy();
@@ -165,7 +167,7 @@ namespace LongoMatch.Gui.Dialog
 			}
 			else {
 				projectdetails.Sensitive = true;
-				projectdetails.SetProject(MainClass.DB.GetProject(project.UUID));
+				projectdetails.SetProject(DB.GetProject(project.UUID));
 				saveButton.Sensitive = false;
 				deleteButton.Sensitive = true;
 				exportbutton.Sensitive = true;
@@ -184,7 +186,7 @@ namespace LongoMatch.Gui.Dialog
 			                FileChooserAction.Save,
 			                "gtk-cancel",ResponseType.Cancel,
 			                "gtk-save",ResponseType.Accept);
-			fChooser.SetCurrentFolder(MainClass.HomeDir());
+			fChooser.SetCurrentFolder(homeDir);
 			FileFilter filter = new FileFilter();
 			filter.Name = Constants.PROJECT_NAME;
 			filter.AddPattern("*.lpr");
diff --git a/LongoMatch/Gui/Dialog/RenderingJobsDialog.cs b/LongoMatch.GUI/Gui/Dialog/RenderingJobsDialog.cs
similarity index 95%
rename from LongoMatch/Gui/Dialog/RenderingJobsDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/RenderingJobsDialog.cs
index ae413fb..8b9eb33 100644
--- a/LongoMatch/Gui/Dialog/RenderingJobsDialog.cs
+++ b/LongoMatch.GUI/Gui/Dialog/RenderingJobsDialog.cs
@@ -20,17 +20,17 @@ using System.Collections.Generic;
 using Gtk;
 
 using LongoMatch.Common;
+using LongoMatch.Interfaces;
 
-using LongoMatch.Services.JobsManager;
 
 namespace LongoMatch.Gui.Dialog
 {
 	public partial class RenderingJobsDialog : Gtk.Dialog
 	{
-		RenderingJobsManager manager;
+		IRenderingJobsManager manager;
 		TreeStore model;
 		
-		public RenderingJobsDialog (RenderingJobsManager manager)
+		public RenderingJobsDialog (IRenderingJobsManager manager)
 		{
 			this.Build ();
 			this.manager = manager;
diff --git a/LongoMatch/Gui/Dialog/SnapshotsDialog.cs b/LongoMatch.GUI/Gui/Dialog/SnapshotsDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/SnapshotsDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/SnapshotsDialog.cs
diff --git a/LongoMatch/Gui/Dialog/SubCategoryTagsEditor.cs b/LongoMatch.GUI/Gui/Dialog/SubCategoryTagsEditor.cs
similarity index 96%
rename from LongoMatch/Gui/Dialog/SubCategoryTagsEditor.cs
rename to LongoMatch.GUI/Gui/Dialog/SubCategoryTagsEditor.cs
index acc1f70..e4391d6 100644
--- a/LongoMatch/Gui/Dialog/SubCategoryTagsEditor.cs
+++ b/LongoMatch.GUI/Gui/Dialog/SubCategoryTagsEditor.cs
@@ -31,11 +31,11 @@ namespace LongoMatch.Gui.Dialog
 		private List<string> templates;
 		private Color templateExistsColor;
 		
-		public SubCategoryTagsEditor (TagSubCategory template)
+		public SubCategoryTagsEditor (TagSubCategory template, List<string> templates)
 		{
 			this.Build ();
 			Gdk.Color.Parse("red", ref templateExistsColor);
-			templates = MainClass.ts.SubCategoriesTemplateProvider.TemplatesNames;
+			this.templates = templates; 
 			tagsDict = new Dictionary<string, Widget>();
 			addtagbutton.Clicked += OnAddTag;
 			tagentry.Activated += OnAddTag;
diff --git a/LongoMatch/Gui/Dialog/TaggerDialog.cs b/LongoMatch.GUI/Gui/Dialog/TaggerDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/TaggerDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/TaggerDialog.cs
diff --git a/LongoMatch/Gui/Dialog/TemplateEditorDialog.cs b/LongoMatch.GUI/Gui/Dialog/TemplateEditorDialog.cs
similarity index 94%
rename from LongoMatch/Gui/Dialog/TemplateEditorDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/TemplateEditorDialog.cs
index 236087e..fc6e163 100644
--- a/LongoMatch/Gui/Dialog/TemplateEditorDialog.cs
+++ b/LongoMatch.GUI/Gui/Dialog/TemplateEditorDialog.cs
@@ -45,8 +45,8 @@ namespace LongoMatch.Gui.Dialog
 	public class TemplateEditorDialog<T, U> : TemplateEditorDialog where T: ITemplate<U> {
 		ITemplateWidget<T, U> templateEditor;
 		
-		public TemplateEditorDialog () {
-			templateEditor = MainClass.ts.GetTemplateEditor<T, U> ();
+		public TemplateEditorDialog (ITemplateWidget<T, U> templateEditor) {
+			this.templateEditor = templateEditor;
 			templateEditor.CanExport = true;
 			AddTemplateEditor ((Widget)templateEditor);
 			
diff --git a/LongoMatch/Gui/Dialog/TemplatesManager.cs b/LongoMatch.GUI/Gui/Dialog/TemplatesManager.cs
similarity index 96%
rename from LongoMatch/Gui/Dialog/TemplatesManager.cs
rename to LongoMatch.GUI/Gui/Dialog/TemplatesManager.cs
index 1dd6514..c766e29 100644
--- a/LongoMatch/Gui/Dialog/TemplatesManager.cs
+++ b/LongoMatch.GUI/Gui/Dialog/TemplatesManager.cs
@@ -27,7 +27,6 @@ using Mono.Unix;
 using LongoMatch.Interfaces;
 using LongoMatch.Gui.Component;
 using LongoMatch.Store.Templates;
-using LongoMatch.Services;
 
 namespace LongoMatch.Gui.Dialog
 {
@@ -79,11 +78,14 @@ namespace LongoMatch.Gui.Dialog
 		private ITemplateWidget<T, U> templatesWidget;
 		private string templateName;
 
-		public TemplatesManager() : base()
+		public TemplatesManager(ITemplateProvider<T, U> templatesProvider,
+		                        ITemplateWidget<T, U> templatesWidget) : base()
 		{
 			treeview = this.TreeView;
-			templatesProvider = MainClass.ts.GetTemplateProvider<T, U> ();
-			templatesWidget = MainClass.ts.GetTemplateEditor <T, U> ();
+			this.templatesProvider = templatesProvider;
+			//MainClass.ts.GetTemplateProvider<T, U> ();
+			this.templatesWidget = templatesWidget;
+			//MainClass.ts.GetTemplateEditor <T, U> ();
 			AddTemplateEditor ((Widget) templatesWidget);
 			
 			Gtk.TreeViewColumn templateFileColumn = new Gtk.TreeViewColumn();
diff --git a/LongoMatch/Gui/Dialog/UpdateDialog.cs b/LongoMatch.GUI/Gui/Dialog/UpdateDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/UpdateDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/UpdateDialog.cs
diff --git a/LongoMatch/Gui/Dialog/VideoEditionProperties.cs b/LongoMatch.GUI/Gui/Dialog/VideoEditionProperties.cs
similarity index 97%
rename from LongoMatch/Gui/Dialog/VideoEditionProperties.cs
rename to LongoMatch.GUI/Gui/Dialog/VideoEditionProperties.cs
index 0dba29c..8aea741 100644
--- a/LongoMatch/Gui/Dialog/VideoEditionProperties.cs
+++ b/LongoMatch.GUI/Gui/Dialog/VideoEditionProperties.cs
@@ -32,10 +32,9 @@ namespace LongoMatch.Gui.Dialog
 	[System.ComponentModel.ToolboxItem(false)]
 	public partial class VideoEditionProperties : Gtk.Dialog
 	{
-		private EncodingSettings encSettings;
-		private ListStore stdStore;
-		private ListStore encStore;
-
+		EncodingSettings encSettings;
+		ListStore stdStore;
+		ListStore encStore;
 
 		#region Constructors
 		public VideoEditionProperties()
@@ -147,7 +146,7 @@ namespace LongoMatch.Gui.Dialog
 			                FileChooserAction.Save,
 			                "gtk-cancel",ResponseType.Cancel,
 			                "gtk-save",ResponseType.Accept);
-			fChooser.SetCurrentFolder(MainClass.VideosDir());
+			fChooser.SetCurrentFolder(Config.VideosDir());
 			fChooser.CurrentName = "NewVideo."+GetExtension();
 			fChooser.DoOverwriteConfirmation = true;
 			FileFilter filter = new FileFilter();
diff --git a/LongoMatch/Gui/Dialog/Win32CalendarDialog.cs b/LongoMatch.GUI/Gui/Dialog/Win32CalendarDialog.cs
similarity index 100%
rename from LongoMatch/Gui/Dialog/Win32CalendarDialog.cs
rename to LongoMatch.GUI/Gui/Dialog/Win32CalendarDialog.cs
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
new file mode 100644
index 0000000..55c8e09
--- /dev/null
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -0,0 +1,743 @@
+// MainWindow.cs
+//
+//  Copyright (C) 2007-2009 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+//Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Gdk;
+using GLib;
+using Gtk;
+using LongoMatch.Common;
+using LongoMatch.Gui.Dialog;
+using LongoMatch.Handlers;
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+using LongoMatch.Store.Templates;
+using LongoMatch.Video.Common;
+
+using Mono.Unix;
+using LongoMatch.Gui.Component;
+using LongoMatch.Multimedia.Interfaces;
+
+
+
+namespace LongoMatch.Gui
+{
+	[System.ComponentModel.Category("LongoMatch")]
+	[System.ComponentModel.ToolboxItem(false)]
+	public partial class MainWindow : Gtk.Window
+	{
+	
+		/* Tags */
+		public event NewTagHandler NewTagEvent;
+		public event NewTagStartHandler NewTagStartEvent;
+		public event NewTagStopHandler NewTagStopEvent;
+		public event PlaySelectedHandler PlaySelectedEvent;
+		public event NewTagAtFrameHandler NewTagAtFrameEvent;
+		public event TagPlayHandler TagPlayEvent;
+		public event PlaysDeletedHandler PlaysDeletedEvent;
+		public event TimeNodeChangedHandler TimeNodeChanged;
+		
+		/* Playlist */
+		public event NewJobHandler NewJobEvent;
+		public event PlayListNodeAddedHandler PlayListNodeAddedEvent;
+		public event PlayListNodeSelectedHandler PlayListNodeSelectedEvent;
+		public event OpenPlaylistHandler OpenPlaylistEvent;
+		public event NewPlaylistHandler NewPlaylistEvent;
+		public event SavePlaylistHandler SavePlaylistEvent; 
+		
+		/* Snapshots */
+		public event SnapshotSeriesHandler SnapshotSeriesEvent;
+		
+		/* Projects */
+		public event SaveProjectHandler SaveProjectEvent;
+		public event NewProjectHandler NewProjectEvent;
+		public event OpenProjectHandler OpenProjectEvent;
+		public event ImportProjectHandler ImportProjectEvent;
+		public event ExportProjectHandler ExportProjectEvent;
+		
+		/* Managers */
+		public event ManageJobsHandler ManageJobsEvent; 
+		public event ManageTeamsHandler ManageTeamsEvent;
+		public event ManageCategoriesHandler ManageCategoriesEvent;
+		public event ManageProjects ManageProjectsEvent;
+		public event ApplyCurrentRateHandler ApplyRateEvent;
+
+		private static Project openedProject;
+		private ProjectType projectType;
+		private TimeNode selectedTimeNode;
+
+		#region Constructors
+		public MainWindow() :
+		base("LongoMatch")
+		{
+			this.Build();
+
+			projectType = ProjectType.None;
+
+			player.SetLogo(System.IO.Path.Combine(Config.ImagesDir(),"background.png"));
+			player.LogoMode = true;
+			player.Tick += OnTick;
+
+			capturer.Visible = false;
+			capturer.Logo = System.IO.Path.Combine(Config.ImagesDir(),"background.png");
+			capturer.CaptureFinished += delegate {
+				CloseCaptureProject();
+			};
+			
+			buttonswidget.Mode = TagMode.Predifined;
+			localPlayersList.Team = Team.LOCAL;
+			visitorPlayersList.Team = Team.VISITOR;
+			
+			ConnectSignals();
+			ConnectMenuSignals();
+		}
+
+		#endregion
+		
+		#region Plubic Methods
+		public void AddPlay(Play play) {
+			playsList.AddPlay(play);
+			tagsList.AddPlay(play);
+			timeline.AddPlay(play);
+			/* FIXME: Check performance */
+			UpdateTeamsModels();
+			timeline.QueueDraw();
+		}
+		
+		public void UpdateSelectedPlay (Play play) {
+			timeline.SelectedTimeNode = play;
+			notes.Visible = true;
+			notes.Play= play;
+		}
+
+		public void UpdateCategories (Categories categories) {
+			buttonswidget.Categories = openedProject.Categories;
+		}
+		
+		public void DeletePlays (List<Play> plays) {
+			playsList.RemovePlays(plays);
+			timeline.RemovePlays(plays);
+			tagsList.RemovePlays(plays);
+			UpdateTeamsModels();
+			timeline.QueueDraw();
+		}
+		
+		public RenderingStateBar RenderingStateBar{
+			get {
+				return renderingstatebar1;
+			}
+		}
+		
+		public PlayerBin Player{
+			get {
+				return player;
+			}
+		}
+		
+		public CapturerBin Capturer{
+			get {
+				return capturer;
+			}
+		}
+		
+		public PlayListWidget Playlist{
+			get {
+				return playlist;
+			}
+		}
+		#endregion
+		
+		#region Private Methods
+		
+		private void ConnectSignals() {
+			/* Adding Handlers for each event */
+
+			/* Connect new mark event */
+			buttonswidget.NewMarkEvent += EmitNewTag;;
+			buttonswidget.NewMarkStartEvent += EmitNewTagStart;
+			buttonswidget.NewMarkStopEvent += EmitNewTagStop;
+			timeline.NewMarkEvent += EmitNewTagAtFrame;
+
+			/* Connect TimeNodeChanged events */
+			playsList.TimeNodeChanged += EmitTimeNodeChanged;
+			localPlayersList.TimeNodeChanged += EmitTimeNodeChanged;
+			visitorPlayersList.TimeNodeChanged += EmitTimeNodeChanged;
+			tagsList.TimeNodeChanged += EmitTimeNodeChanged;
+			timeline.TimeNodeChanged += EmitTimeNodeChanged;
+			notes.TimeNodeChanged += EmitTimeNodeChanged;
+
+			/* Connect TimeNodeDeleted events */
+			playsList.TimeNodeDeleted += EmitPlaysDeleted;
+			timeline.TimeNodeDeleted += EmitPlaysDeleted;
+
+			/* Connect TimeNodeSelected events */
+			playsList.TimeNodeSelected += OnTimeNodeSelected;
+			localPlayersList.TimeNodeSelected += OnTimeNodeSelected;
+			visitorPlayersList.TimeNodeSelected += OnTimeNodeSelected;
+			tagsList.TimeNodeSelected += OnTimeNodeSelected;
+			timeline.TimeNodeSelected += OnTimeNodeSelected;
+
+			/* Connect playlist events */
+			playlist.PlayListNodeSelected += EmitPlayListNodeSelected;
+			playlist.ApplyCurrentRate += EmitApplyRate;
+			playlist.NewPlaylistEvent += EmitNewPlaylist;
+			playlist.OpenPlaylistEvent += EmitOpenPlaylist;
+			playlist.SavePlaylistEvent += EmitSavePlaylist;
+
+			/* Connect PlayListNodeAdded events */
+			playsList.PlayListNodeAdded += OnPlayListNodeAdded;
+			localPlayersList.PlayListNodeAdded += OnPlayListNodeAdded;
+			visitorPlayersList.PlayListNodeAdded += OnPlayListNodeAdded;
+			tagsList.PlayListNodeAdded += OnPlayListNodeAdded;
+
+			/* Connect tags events */
+			playsList.TagPlay += EmitTagPlay;
+
+			/* Connect SnapshotSeries events */
+			playsList.SnapshotSeriesEvent += EmitSnapshotSeries;
+			localPlayersList.SnapshotSeriesEvent += EmitSnapshotSeries;
+			visitorPlayersList.SnapshotSeriesEvent += EmitSnapshotSeries;
+			tagsList.SnapshotSeriesEvent += EmitSnapshotSeries;
+
+			playlist.NewRenderingJob += EmitNewJob;
+			playsList.NewRenderingJob += EmitNewJob;
+			
+			renderingstatebar1.ManageJobs += (e, o) => {EmitManageJobs();};
+			
+			openAction.Activated += (sender, e) => {EmitSaveProject();};
+		}
+		
+		private void ConnectMenuSignals() {
+			SaveProjectAction.Activated += (o, e) => {EmitSaveProject();};
+			CloseProjectAction.Activated += (o, e) => {PromptCloseProject();};
+			ImportProjectAction.Activated += (o, e) => {EmitImportProject();};
+			ExportProjectToCSVFileAction.Activated += (o, e) => {EmitExportProject();};
+			QuitAction.Activated += (o, e) => {CloseAndQuit();};
+			CategoriesTemplatesManagerAction.Activated += (o, e) => {EmitManageCategories();};
+			TeamsTemplatesManagerAction.Activated += (o, e) => {EmitManageTeams();};
+			ProjectsManagerAction.Activated += (o, e) => {EmitManageProjects();};
+		}
+		
+		private void UpdateTeamsModels() {
+			TreeStore local, visitor;
+		
+			openedProject.GetPlayersModel (out local, out visitor);
+			localPlayersList.SetTeam(local);
+			visitorPlayersList.SetTeam(visitor);
+		}
+
+		public bool SetProject(Project project, ProjectType projectType, CaptureSettings props)
+		{
+			bool isLive = false;
+			
+			/* Update tabs labels */
+			var desc = project.Description;
+			visitorteamlabel.Text = desc.VisitorName;
+			localteamlabel.Text = desc.LocalName;
+			
+			if(projectType == ProjectType.FileProject) {
+				Title = System.IO.Path.GetFileNameWithoutExtension(desc.File.FilePath) +
+				        " - " + Constants.SOFTWARE_NAME;
+				player.LogoMode = false;
+				timeline.Project = project;
+
+			} else {
+				Title = Constants.SOFTWARE_NAME;
+				isLive = true;
+				if(projectType == ProjectType.FakeCaptureProject)
+					capturer.Type = CapturerType.Fake;
+				player.Visible = false;
+				capturer.Visible = true;
+				TaggingViewAction.Active = true;
+			}
+			
+			openedProject = project;
+			this.projectType = projectType;
+			
+			playsList.ProjectIsLive = isLive;
+			localPlayersList.ProjectIsLive = isLive;
+			visitorPlayersList.ProjectIsLive = isLive;
+			tagsList.ProjectIsLive = isLive;
+			playsList.Project=project;
+			tagsList.Project = project;
+			UpdateTeamsModels(project);
+			buttonswidget.Categories = project.Categories;
+			MakeActionsSensitive(true,projectType);
+			ShowWidgets();
+			return true;
+		}
+		
+		private void UpdateTeamsModels(Project project) {
+			TreeStore local, visitor;
+			
+			project.GetPlayersModel (out local, out visitor);
+			localPlayersList.SetTeam(local);
+			visitorPlayersList.SetTeam(visitor);
+		}
+
+		private void CloseCaptureProject() {
+			if(projectType == ProjectType.CaptureProject) {
+				capturer.Close();
+				player.Visible = true;
+				capturer.Visible = false;;
+				EmitSaveProject();
+			} else if(projectType == ProjectType.FakeCaptureProject) {
+				CloseOpenedProject(true);
+			}
+		}
+
+		private void CloseOpenedProject(bool save) {
+			/* FIXME
+			 * EmitCloseOpenedProject(save);
+			 */
+			if(projectType != ProjectType.FileProject)
+				capturer.Close();
+			else
+				player.Close();
+
+			if(openedProject != null)
+				openedProject.Clear();
+			openedProject = null;
+			projectType = ProjectType.None;
+			ResetGUI();
+		}
+
+		private void ResetGUI() {
+			bool playlistVisible = playlist.Visible;
+			Title = Constants.SOFTWARE_NAME;
+			player.Visible = true;
+			player.LogoMode = true;
+			capturer.Visible = false;
+			ClearWidgets();
+			HideWidgets();
+			playlist.Visible = playlistVisible;
+			rightvbox.Visible = playlistVisible;
+			notes.Visible = false;
+			selectedTimeNode = null;
+			MakeActionsSensitive(false, projectType);
+		}
+
+		private void MakeActionsSensitive(bool sensitive, ProjectType projectType) {
+			bool sensitive2 = sensitive && projectType == ProjectType.FileProject;
+			CloseProjectAction.Sensitive=sensitive;
+			SaveProjectAction.Sensitive = sensitive;
+			TaggingViewAction.Sensitive = sensitive2;
+			ManualTaggingViewAction.Sensitive = sensitive2;
+			TimelineViewAction.Sensitive = sensitive2;
+			ExportProjectToCSVFileAction.Sensitive = sensitive2;
+			HideAllWidgetsAction.Sensitive=sensitive2;
+		}
+
+		private void ShowWidgets() {
+			leftbox.Show();
+			if(TaggingViewAction.Active || ManualTaggingViewAction.Active)
+				buttonswidget.Show();
+			else
+				timeline.Show();
+		}
+
+		private void HideWidgets() {
+			leftbox.Hide();
+			rightvbox.Hide();
+			buttonswidget.Hide();
+			timeline.Hide();
+		}
+
+		private void ClearWidgets() {
+			buttonswidget.Categories = null;
+			playsList.Project = null;
+			tagsList.Clear();
+			timeline.Project = null;
+			localPlayersList.Clear();
+			visitorPlayersList.Clear();
+		}
+
+		private bool PromptCloseProject() {
+			int res;
+			EndCaptureDialog dialog;
+
+			if(openedProject == null)
+				return true;
+
+			if(projectType == ProjectType.FileProject) {
+				MessageDialog md = new MessageDialog(this, DialogFlags.Modal,
+				                                     MessageType.Question, ButtonsType.OkCancel,
+				                                     Catalog.GetString("Do you want to close the current project?"));
+				res = md.Run();
+				md.Destroy();
+				if(res == (int)ResponseType.Ok) {
+					CloseOpenedProject(true);
+					return true;
+				}
+				return false;
+			}
+
+			/* Capture project */
+			dialog = new EndCaptureDialog();
+			dialog.TransientFor = (Gtk.Window)this.Toplevel;
+			res = dialog.Run();
+			dialog.Destroy();
+
+			/* Close project wihtout saving */
+			if(res == (int)EndCaptureResponse.Quit) {
+				CloseOpenedProject(false);
+				return true;
+			} else if(res == (int)EndCaptureResponse.Save) {
+				/* Close and save project */
+				CloseOpenedProject(true);
+				return true;
+			} else
+				/* Continue with the current project */
+				return false;
+		}
+
+		private void CloseAndQuit() {
+			if(!PromptCloseProject())
+				return;
+			EmitSaveProject();
+			player.Dispose();
+			Application.Quit();
+		}
+		
+		#endregion
+
+		#region Callbacks
+		#region File
+		protected virtual void OnNewActivated(object sender, System.EventArgs e)
+		{
+			if(!PromptCloseProject())
+				return;
+			EmitNewProject();
+		}
+
+		protected virtual void OnOpenActivated(object sender, System.EventArgs e)
+		{
+			if(!PromptCloseProject())
+				return;
+			EmitOpenProject();
+		}
+		#endregion
+		
+		#region View
+		protected virtual void OnFullScreenActionToggled(object sender, System.EventArgs e)
+		{
+			player.FullScreen = (sender as Gtk.ToggleAction).Active;
+		}
+
+		protected virtual void OnPlaylistActionToggled(object sender, System.EventArgs e)
+		{
+			bool visible = (sender as Gtk.ToggleAction).Active;
+			playlist.Visible=visible;
+			playsList.PlayListLoaded=visible;
+			localPlayersList.PlayListLoaded=visible;
+			visitorPlayersList.PlayListLoaded=visible;
+
+			if(!visible && !notes.Visible) {
+				rightvbox.Visible = false;
+			} else if(visible) {
+				rightvbox.Visible = true;
+			}
+		}
+
+		protected virtual void OnHideAllWidgetsActionToggled(object sender, System.EventArgs e)
+		{
+			ToggleAction action = sender as ToggleAction;
+			
+			if(openedProject == null)
+				return;
+			
+			leftbox.Visible = !action.Active;
+			timeline.Visible = !action.Active && TimelineViewAction.Active;
+			buttonswidget.Visible = !action.Active &&
+				(TaggingViewAction.Active || ManualTaggingViewAction.Active);
+			if(action.Active)
+				rightvbox.Visible = false;
+			else if(!action.Active && (playlist.Visible || notes.Visible))
+				rightvbox.Visible = true;
+		}
+
+		protected virtual void OnViewToggled(object sender, System.EventArgs e)
+		{
+			/* this callback is triggered by Capture and Free Capture */
+			ToggleAction view = sender as Gtk.ToggleAction;
+			buttonswidget.Visible = view.Active;
+			timeline.Visible = !view.Active;
+			if(view == ManualTaggingViewAction)
+				buttonswidget.Mode = TagMode.Free;
+			else
+				buttonswidget.Mode = TagMode.Predifined;
+		}
+		#endregion
+		#region Help
+		protected virtual void OnHelpAction1Activated(object sender, System.EventArgs e)
+		{
+			try {
+				System.Diagnostics.Process.Start(Constants.MANUAL);
+			} catch {}
+		}
+
+		protected virtual void OnAboutActionActivated(object sender, System.EventArgs e)
+		{
+			var about = new LongoMatch.Gui.Dialog.AboutDialog();
+			about.TransientFor = this;
+			about.Run();
+			about.Destroy();
+		}
+		#endregion
+
+		protected virtual void OnPlayerbin1Error(object o, LongoMatch.Video.Common.ErrorArgs args)
+		{
+			MessagePopup.PopupMessage(this, MessageType.Info,
+			                          Catalog.GetString("The actual project will be closed due to an error in the media player:")+"\n" +args.Message);
+			CloseOpenedProject(true);
+		}
+
+		protected override bool OnKeyPressEvent(EventKey evnt)
+		{
+			Gdk.Key key = evnt.Key;
+			Gdk.ModifierType modifier = evnt.State;
+			bool ret;
+
+			ret = base.OnKeyPressEvent(evnt);
+
+			if(openedProject == null && !player.Opened)
+				return ret;
+
+			if(projectType != ProjectType.CaptureProject &&
+			                projectType != ProjectType.FakeCaptureProject) {
+				switch(key) {
+				case Constants.SEEK_FORWARD:
+					if(modifier == Constants.STEP)
+						player.StepForward();
+					else
+						player.SeekToNextFrame(selectedTimeNode != null);
+					break;
+				case Constants.SEEK_BACKWARD:
+					if(modifier == Constants.STEP)
+						player.StepBackward();
+					else
+						player.SeekToPreviousFrame(selectedTimeNode != null);
+					break;
+				case Constants.FRAMERATE_UP:
+					player.FramerateUp();
+					break;
+				case Constants.FRAMERATE_DOWN:
+					player.FramerateDown();
+					break;
+				case Constants.TOGGLE_PLAY:
+					player.TogglePlay();
+					break;
+				}
+			} else {
+				switch(key) {
+				case Constants.TOGGLE_PLAY:
+					capturer.TogglePause();
+					break;
+				}
+			}
+			return ret;
+		}
+
+		protected virtual void OnTimeNodeSelected(Play play)
+		{
+			rightvbox.Visible=true;
+			if (PlaySelectedEvent != null)
+				PlaySelectedEvent(play);
+		}
+
+		protected virtual void OnSegmentClosedEvent()
+		{
+			if(!playlist.Visible)
+				rightvbox.Visible=false;
+			timeline.SelectedTimeNode = null;
+			notes.Visible = false;
+		}
+		
+		protected virtual void OnTick(object o, TickArgs args)
+		{
+			if(args.CurrentTime != 0 && timeline != null && openedProject != null)
+				timeline.CurrentFrame=(uint)(args.CurrentTime *
+				                             openedProject.Description.File.Fps / 1000);
+		}
+
+		
+		protected virtual void OnUpdate(Version version, string URL) {
+			LongoMatch.Gui.Dialog.UpdateDialog updater = new LongoMatch.Gui.Dialog.UpdateDialog();
+			updater.Fill(version, URL);
+			updater.TransientFor = this;
+			updater.Run();
+			updater.Destroy();
+		}
+
+		protected virtual void OnDrawingToolActionToggled(object sender, System.EventArgs e)
+		{
+			drawingtoolbox1.Visible = DrawingToolAction.Active;
+			drawingtoolbox1.DrawingVisibility = DrawingToolAction.Active;
+		}
+
+		protected override bool OnDeleteEvent(Gdk.Event evnt)
+		{
+			CloseAndQuit();
+			return true;
+		}
+
+		protected virtual void OnCapturerBinError(object o, LongoMatch.Video.Common.ErrorArgs args)
+		{
+			MessagePopup.PopupMessage(this, MessageType.Info,
+			                          Catalog.GetString("An error occured in the video capturer and the current project will be closed:")+"\n" +args.Message);
+			CloseOpenedProject(true);
+		}
+		#endregion
+		
+		#region Events
+		private void EmitPlaySelected(Play play)
+		{
+			if (PlaySelectedEvent != null)
+				PlaySelectedEvent(play);
+		}
+
+		private void EmitTimeNodeChanged(TimeNode tNode, object val)
+		{
+			if (TimeNodeChanged != null)
+				TimeNodeChanged(tNode, val);
+		}
+
+		private void EmitPlaysDeleted(List<Play> plays)
+		{
+			if (PlaysDeletedEvent != null)
+				PlaysDeletedEvent(plays);
+		}
+
+		private void OnPlayListNodeAdded(Play play)
+		{
+			if (PlayListNodeAddedEvent != null)
+				PlayListNodeAddedEvent(play);
+		}
+
+		private void EmitPlayListNodeSelected(PlayListPlay plNode)
+		{
+			if (PlayListNodeSelectedEvent != null)
+				PlayListNodeSelectedEvent(plNode);
+		}
+
+		private void EmitSnapshotSeries(Play play) {
+			if (SnapshotSeriesEvent != null)
+				SnapshotSeriesEvent (play);
+		}
+
+		private void EmitNewTagAtFrame(Category category, int frame) {
+			if (NewTagAtFrameEvent != null)
+				NewTagAtFrameEvent(category, frame);
+		}
+
+		private void EmitNewTag(Category category) {
+			if (NewTagEvent != null)
+				NewTagEvent(category);
+		}
+
+		private void EmitNewTagStart() {
+			if (NewTagStartEvent != null)
+				NewTagStartEvent ();
+		}
+
+		private void EmitNewTagStop(Category category) {
+			if (NewTagStopEvent != null)
+				NewTagStopEvent (category);
+		}
+		
+		private void EmitNewJob(Job job) {
+			if (NewJobEvent != null)
+				NewJobEvent(job);
+		}
+		
+		private void EmitApplyRate(PlayListPlay plNode) {
+			if (ApplyRateEvent != null)
+				ApplyRateEvent (plNode);
+		}
+
+		private void EmitTagPlay(Play play) {
+			if (TagPlayEvent != null)
+				TagPlayEvent (play);
+		}
+		
+		private void EmitSaveProject() {
+			if (SaveProjectEvent != null)
+				SaveProjectEvent(openedProject, projectType);
+		}
+		
+		private void EmitNewProject() {
+			if (NewProjectEvent != null)
+				NewProjectEvent();
+		}
+		
+		private void EmitImportProject() {
+			if (ImportProjectEvent != null)
+				ImportProjectEvent();
+		}
+		
+		private void EmitOpenProject() {
+			if(OpenProjectEvent != null)
+				OpenProjectEvent();
+		}
+		
+		private void EmitExportProject() {
+			if(ExportProjectEvent != null)
+				ExportProjectEvent();
+		}
+		
+		private void EmitManageJobs() {
+			if(ManageJobsEvent != null)
+				ManageJobsEvent();
+		}
+		
+		private void EmitManageTeams() {
+			if(ManageTeamsEvent != null)
+				ManageTeamsEvent();
+		}
+		
+		private void EmitManageCategories() {
+			if(ManageCategoriesEvent != null)
+				ManageCategoriesEvent();
+		}
+		
+		private void EmitManageProjects()
+		{
+			if (ManageProjectsEvent != null)
+				ManageProjectsEvent();
+		}
+		
+		private void EmitNewPlaylist() {
+			if (NewPlaylistEvent != null)
+				NewPlaylistEvent();
+		}
+		
+		private void EmitOpenPlaylist() {
+			if (OpenPlaylistEvent != null)
+				OpenPlaylistEvent();
+		}
+		
+		private void EmitSavePlaylist() {
+			if (SavePlaylistEvent != null)
+				SavePlaylistEvent();
+		}
+		#endregion
+	}
+}
diff --git a/LongoMatch/Gui/Popup/CalendarPopup.cs b/LongoMatch.GUI/Gui/Popup/CalendarPopup.cs
similarity index 100%
rename from LongoMatch/Gui/Popup/CalendarPopup.cs
rename to LongoMatch.GUI/Gui/Popup/CalendarPopup.cs
diff --git a/LongoMatch/Gui/Popup/MessagePopup.cs b/LongoMatch.GUI/Gui/Popup/MessagePopup.cs
similarity index 99%
rename from LongoMatch/Gui/Popup/MessagePopup.cs
rename to LongoMatch.GUI/Gui/Popup/MessagePopup.cs
index 0bcfe25..8db6b9e 100644
--- a/LongoMatch/Gui/Popup/MessagePopup.cs
+++ b/LongoMatch.GUI/Gui/Popup/MessagePopup.cs
@@ -1,3 +1,4 @@
+
 //
 //  Copyright (C) 2007-2009 Andoni Morales Alastruey
 //
diff --git a/LongoMatch/Gui/TransparentDrawingArea.cs b/LongoMatch.GUI/Gui/TransparentDrawingArea.cs
similarity index 100%
rename from LongoMatch/Gui/TransparentDrawingArea.cs
rename to LongoMatch.GUI/Gui/TransparentDrawingArea.cs
diff --git a/LongoMatch/Gui/TreeView/CategoriesTreeView.cs b/LongoMatch.GUI/Gui/TreeView/CategoriesTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/CategoriesTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/CategoriesTreeView.cs
diff --git a/LongoMatch/Gui/TreeView/ListTreeViewBase.cs b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
similarity index 98%
rename from LongoMatch/Gui/TreeView/ListTreeViewBase.cs
rename to LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
index f04156e..2dcfe48 100644
--- a/LongoMatch/Gui/TreeView/ListTreeViewBase.cs
+++ b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
@@ -41,8 +41,8 @@ namespace LongoMatch.Gui.Component
 		protected bool projectIsLive;
 
 		public event TimeNodeChangedHandler TimeNodeChanged;
-		public event TimeNodeSelectedHandler TimeNodeSelected;
-		public event TimeNodeDeletedHandler TimeNodeDeleted;
+		public event PlaySelectedHandler TimeNodeSelected;
+		public event PlaysDeletedHandler TimeNodeDeleted;
 		public event PlayListNodeAddedHandler PlayListNodeAdded;
 		public event SnapshotSeriesHandler SnapshotSeriesEvent;
 		public event TagPlayHandler TagPlay;
diff --git a/LongoMatch/Gui/TreeView/PlayListTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
similarity index 80%
rename from LongoMatch/Gui/TreeView/PlayListTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
index d54981c..bdedd50 100644
--- a/LongoMatch/Gui/TreeView/PlayListTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
@@ -22,8 +22,9 @@ using Gtk;
 using Gdk;
 using Mono.Unix;
 using LongoMatch.Store;
-using LongoMatch.Playlist;
+using LongoMatch.Common;
 using LongoMatch.Handlers;
+using LongoMatch.Interfaces;
 using LongoMatch.Gui.Dialog;
 
 namespace LongoMatch.Gui.Component
@@ -34,13 +35,14 @@ namespace LongoMatch.Gui.Component
 	[System.ComponentModel.ToolboxItem(true)]
 	public class PlayListTreeView : Gtk.TreeView
 	{
-		private Menu menu;
-		private MenuItem setRate;
-		private ListStore ls;
-		private PlayList playlist;
-		private PlayListPlay loadedTimeNode = null; //The play currently loaded in the player
-		private PlayListPlay selectedTimeNode = null; //The play selected in the tree
-		private TreeIter selectedIter;
+		Menu menu;
+		MenuItem setRate;
+		ListStore ls;
+		IPlayList playlist;
+		PlayListPlay loadedPlay = null; //The play currently loaded in the player
+		PlayListPlay selectedPlay = null; //The play selected in the tree
+		TreeIter selectedIter;
+		TreePath pathIn, pathOut;
 
 		public event ApplyCurrentRateHandler ApplyCurrentRate;
 
@@ -75,7 +77,7 @@ namespace LongoMatch.Gui.Component
 			this.AppendColumn(nameColumn);
 		}
 
-		public PlayList PlayList {
+		public IPlayList PlayList {
 			set {
 				this.playlist = value;
 			}
@@ -83,7 +85,7 @@ namespace LongoMatch.Gui.Component
 
 		public PlayListPlay LoadedPlay {
 			set {
-				loadedTimeNode = value;
+				loadedPlay = value;
 				this.QueueDraw();
 			}
 		}
@@ -92,7 +94,6 @@ namespace LongoMatch.Gui.Component
 		{
 		}
 
-
 		protected override bool OnButtonPressEvent(EventButton evnt)
 		{
 			if((evnt.Type == EventType.ButtonPress) && (evnt.Button == 3))
@@ -102,8 +103,8 @@ namespace LongoMatch.Gui.Component
 				if(path!=null) {
 					ListStore list = ((ListStore)Model);
 					Model.GetIter(out selectedIter,path);
-					selectedTimeNode = (PlayListPlay)(list.GetValue(selectedIter,0));
-					setRate.Sensitive = selectedTimeNode == loadedTimeNode;
+					selectedPlay = (PlayListPlay)(list.GetValue(selectedIter,0));
+					setRate.Sensitive = selectedPlay == loadedPlay;
 					menu.Popup();
 				}
 			}
@@ -113,9 +114,9 @@ namespace LongoMatch.Gui.Component
 		protected void OnTitle(object o, EventArgs args) {
 			EntryDialog ed = new EntryDialog();
 			ed.Title = Catalog.GetString("Edit Title");
-			ed.Text = selectedTimeNode.Name;
+			ed.Text = selectedPlay.Name;
 			if(ed.Run() == (int)ResponseType.Ok) {
-				selectedTimeNode.Name = ed.Text;
+				selectedPlay.Name = ed.Text;
 				this.QueueDraw();
 			}
 			ed.Destroy();
@@ -123,13 +124,13 @@ namespace LongoMatch.Gui.Component
 
 		protected void OnDelete(object obj, EventArgs args) {
 			ListStore list = ((ListStore)Model);
-			playlist.Remove(selectedTimeNode);
+			playlist.Remove(selectedPlay);
 			list.Remove(ref selectedIter);
 		}
 
 		protected void OnApplyRate(object obj, EventArgs args) {
 			if(ApplyCurrentRate != null)
-				ApplyCurrentRate(selectedTimeNode);
+				ApplyCurrentRate(selectedPlay);
 		}
 
 		private void RenderName(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
@@ -143,7 +144,7 @@ namespace LongoMatch.Gui.Component
 				(cell as Gtk.CellRendererText).Foreground = "red";
 				(cell as Gtk.CellRendererText).Text += "\n"+Catalog.GetString("File not found")+": "+tNode.MediaFile.FilePath;
 			}
-			else if(tNode == loadedTimeNode)
+			else if(tNode == loadedPlay)
 				(cell as Gtk.CellRendererText).Foreground = "blue";
 			else
 				(cell as Gtk.CellRendererText).Foreground = "black";
@@ -154,5 +155,18 @@ namespace LongoMatch.Gui.Component
 		{
 			return false;
 		}
+		
+		protected override void OnDragBegin (DragContext context)
+		{
+			pathIn = Selection.GetSelectedRows()[0];
+			base.OnDragBegin (context);
+		}
+		
+		protected override void OnDragEnd (DragContext context)
+		{
+			base.OnDragEnd (context);
+			pathOut = Selection.GetSelectedRows()[0];
+			playlist.Reorder(pathIn.Indices[0], pathOut.Indices[0]);
+		}
 	}
 }
diff --git a/LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlayerPropertiesTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/PlayerPropertiesTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/PlayerPropertiesTreeView.cs
diff --git a/LongoMatch/Gui/TreeView/PlayersTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/PlayersTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs
diff --git a/LongoMatch/Gui/TreeView/PlaysTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/PlaysTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs
diff --git a/LongoMatch/Gui/TreeView/RenderingJobsTreeView.cs b/LongoMatch.GUI/Gui/TreeView/RenderingJobsTreeView.cs
similarity index 98%
rename from LongoMatch/Gui/TreeView/RenderingJobsTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/RenderingJobsTreeView.cs
index f08f009..c5f920a 100644
--- a/LongoMatch/Gui/TreeView/RenderingJobsTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/RenderingJobsTreeView.cs
@@ -20,8 +20,8 @@ using System.Collections.Generic;
 using Gtk;
 using Stetic;
 using Mono.Unix;
+using LongoMatch.Common;
 
-using LongoMatch.Services.JobsManager;
 
 namespace LongoMatch.Gui.Component
 {
diff --git a/LongoMatch/Gui/TreeView/SubCategoriesTreeView.cs b/LongoMatch.GUI/Gui/TreeView/SubCategoriesTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/SubCategoriesTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/SubCategoriesTreeView.cs
diff --git a/LongoMatch/Gui/TreeView/TagsTreeView.cs b/LongoMatch.GUI/Gui/TreeView/TagsTreeView.cs
similarity index 100%
rename from LongoMatch/Gui/TreeView/TagsTreeView.cs
rename to LongoMatch.GUI/Gui/TreeView/TagsTreeView.cs
diff --git a/LongoMatch.GUI/LongoMatch.GUI.mdp b/LongoMatch.GUI/LongoMatch.GUI.mdp
new file mode 100644
index 0000000..5051370
--- /dev/null
+++ b/LongoMatch.GUI/LongoMatch.GUI.mdp
@@ -0,0 +1,165 @@
+<Project name="LongoMatch.GUI" fileversion="2.0" DefaultNamespace="LongoMatch" language="C#" clr-version="Net_2_0" targetFramework="4.0" ctype="DotNetProject">
+  <Deployment.LinuxDeployData />
+  <Configurations active="Release">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Gui" assemblyKeyFile="/home/andoni/Proyectos/longomatch/LongoMatch/." />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Gui" assemblyKeyFile="/home/andoni/Proyectos/LongoMatch/LongoMatch.GUI/." />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
+      <CodeGeneration compiler="Mcs" warninglevel="3" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File subtype="Directory" buildaction="Compile" name="Gui" />
+    <File subtype="Code" buildaction="Compile" name="Gui/MainWindow.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TransparentDrawingArea.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Gui/Dialog" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EditPlayerDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EditCategoryDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EntryDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/NewProjectDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/OpenProjectDialog.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Gui/Component" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/ProjectDetailsWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/ButtonsWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/DrawingToolBox.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/NotesWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/FramesCaptureProgressDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/HotKeySelectorDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayerProperties.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Gui/TreeView" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayersTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayerPropertiesTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayListTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlaysTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/PlayersSelectionDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/SnapshotsDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/UpdateDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/Win32CalendarDialog.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Gui/Popup" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Popup/CalendarPopup.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Popup/MessagePopup.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TemplateEditorDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayersListTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/ProjectsManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayListWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/ProjectListWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TemplatesManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TemplatesEditorBase.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/CategoriesTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeLineWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeScale.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/VideoEditionProperties.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeReferenceWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoryProperties.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlaysListTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/DrawingWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/DrawingTool.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TaggerDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/TagsTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TagsTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/ProjectSelectionDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EndCaptureDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/BusyDialog.cs" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="gtk-gui/gui.stetic" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/generated.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.MainWindow.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/ListTreeViewBase.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoriesScale.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/SubCategoriesTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/SubCategoryTagsEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayersTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/StringTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TeamTaggerWidget.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoriesTemplateEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/TeamTemplateEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/RenderingStateBar.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/RenderingJobsTreeView.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/RenderingJobsDialog.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs" />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/About.cs" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/longomatch.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/stock_draw-circle-unfilled.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/stock_draw-freeform-line.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/stock_draw-line-45.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/stock_draw-line-ends-with-arrow.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/stock_draw-rectangle-unfilled.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/video.png" />
+    <File subtype="Code" buildaction="EmbedAsResource" name="../images/camera-video.png" />
+  </Contents>
+  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="../CesarPlayer/Makefile.am" RelativeConfigureInPath="../">
+    <BuildFilesVar Name="FILES" />
+    <DeployFilesVar />
+    <ResourcesVar Name="RESOURCES" />
+    <OthersVar />
+    <GacRefVar Name="REFERENCES" />
+    <AsmRefVar Name="REFERENCES" />
+    <ProjectRefVar Name="REFERENCES" />
+  </MonoDevelop.Autotools.MakefileInfo>
+  <References>
+    <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI.Multimedia" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Multimedia" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  </References>
+  <LanguageParameters ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
new file mode 100644
index 0000000..17fff7f
--- /dev/null
+++ b/LongoMatch.GUI/Makefile.am
@@ -0,0 +1,125 @@
+ASSEMBLY = LongoMatch.GUI
+TARGET = library
+
+LINK = $(REF_DEP_LONGOMATCH_GUI)
+
+SOURCES = \
+	gtk-gui/generated.cs \
+	gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs \
+	gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs \
+	gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs \
+	gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs \
+	gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs \
+	gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs \
+	gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs \
+	gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs \
+	gtk-gui/LongoMatch.Gui.MainWindow.cs \
+	gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs \
+	gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs \
+	Gui/Component/ButtonsWidget.cs \
+	Gui/Component/CategoriesScale.cs \
+	Gui/Component/CategoriesTemplateEditor.cs \
+	Gui/Component/CategoryProperties.cs \
+	Gui/Component/DrawingToolBox.cs \
+	Gui/Component/DrawingWidget.cs \
+	Gui/Component/NotesWidget.cs \
+	Gui/Component/PlayerProperties.cs \
+	Gui/Component/PlayersListTreeWidget.cs \
+	Gui/Component/PlayersTaggerWidget.cs \
+	Gui/Component/PlayListWidget.cs \
+	Gui/Component/PlaysListTreeWidget.cs \
+	Gui/Component/ProjectDetailsWidget.cs \
+	Gui/Component/ProjectListWidget.cs \
+	Gui/Component/RenderingStateBar.cs \
+	Gui/Component/StringTaggerWidget.cs \
+	Gui/Component/TaggerWidget.cs \
+	Gui/Component/TagsTreeWidget.cs \
+	Gui/Component/TeamTaggerWidget.cs \
+	Gui/Component/TeamTemplateEditor.cs \
+	Gui/Component/TemplatesEditorBase.cs \
+	Gui/Component/TimeLineWidget.cs \
+	Gui/Component/TimeReferenceWidget.cs \
+	Gui/Component/TimeScale.cs \
+	Gui/Dialog/About.cs \
+	Gui/Dialog/BusyDialog.cs \
+	Gui/Dialog/DrawingTool.cs \
+	Gui/Dialog/EditCategoryDialog.cs \
+	Gui/Dialog/EditPlayerDialog.cs \
+	Gui/Dialog/EndCaptureDialog.cs \
+	Gui/Dialog/EntryDialog.cs \
+	Gui/Dialog/FramesCaptureProgressDialog.cs \
+	Gui/Dialog/HotKeySelectorDialog.cs \
+	Gui/Dialog/NewProjectDialog.cs \
+	Gui/Dialog/OpenProjectDialog.cs \
+	Gui/Dialog/PlayersSelectionDialog.cs \
+	Gui/Dialog/ProjectSelectionDialog.cs \
+	Gui/Dialog/ProjectsManager.cs \
+	Gui/Dialog/RenderingJobsDialog.cs \
+	Gui/Dialog/SnapshotsDialog.cs \
+	Gui/Dialog/SubCategoryTagsEditor.cs \
+	Gui/Dialog/TaggerDialog.cs \
+	Gui/Dialog/TemplateEditorDialog.cs \
+	Gui/Dialog/TemplatesManager.cs \
+	Gui/Dialog/UpdateDialog.cs \
+	Gui/Dialog/VideoEditionProperties.cs \
+	Gui/Dialog/Win32CalendarDialog.cs \
+	Gui/MainWindow.cs \
+	Gui/Popup/CalendarPopup.cs \
+	Gui/Popup/MessagePopup.cs \
+	Gui/TransparentDrawingArea.cs \
+	Gui/TreeView/CategoriesTreeView.cs \
+	Gui/TreeView/ListTreeViewBase.cs \
+	Gui/TreeView/PlayerPropertiesTreeView.cs \
+	Gui/TreeView/PlayersTreeView.cs \
+	Gui/TreeView/PlayListTreeView.cs \
+	Gui/TreeView/PlaysTreeView.cs \
+	Gui/TreeView/RenderingJobsTreeView.cs \
+	Gui/TreeView/SubCategoriesTreeView.cs \
+	Gui/TreeView/TagsTreeView.cs
+
+RESOURCES = \
+	$(top_srcdir)/images/longomatch.png\
+	$(top_srcdir)/images/stock_draw-line-45.png\
+	$(top_srcdir)/images/stock_draw-circle-unfilled.png\
+	$(top_srcdir)/images/stock_draw-line-ends-with-arrow.png\
+	$(top_srcdir)/images/stock_draw-rectangle-unfilled.png\
+	$(top_srcdir)/images/stock_draw-freeform-line.png\
+	$(top_srcdir)/images/camera-video.png\
+	$(top_srcdir)/images/video.png \
+	gtk-gui/objects.xml \
+	gtk-gui/gui.stetic
+
+include $(top_srcdir)/build/build.mk
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
similarity index 95%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
index b13f71e..43a3882 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui.Component
 	public partial class ButtonsWidget
 	{
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.Button cancelbutton;
-
 		private global::Gtk.Button starttagbutton;
-
 		private global::Gtk.Table table1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -28,7 +25,7 @@ namespace LongoMatch.Gui.Component
 			this.cancelbutton.UseUnderline = true;
 			this.cancelbutton.Label = global::Mono.Unix.Catalog.GetString ("Cancel");
 			this.vbox1.Add (this.cancelbutton);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.cancelbutton]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.cancelbutton]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
@@ -38,7 +35,7 @@ namespace LongoMatch.Gui.Component
 			this.starttagbutton.UseUnderline = true;
 			this.starttagbutton.Label = global::Mono.Unix.Catalog.GetString ("Tag new play");
 			this.vbox1.Add (this.starttagbutton);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.starttagbutton]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.starttagbutton]));
 			w2.Position = 1;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -48,7 +45,7 @@ namespace LongoMatch.Gui.Component
 			this.table1.RowSpacing = ((uint)(1));
 			this.table1.ColumnSpacing = ((uint)(1));
 			this.vbox1.Add (this.table1);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.table1]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.table1]));
 			w3.Position = 2;
 			this.Add (this.vbox1);
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
index 3f4e2b7..08c045d 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
@@ -5,75 +5,41 @@ namespace LongoMatch.Gui.Component
 	public partial class CategoryProperties
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Frame frame4;
-
 		private global::Gtk.Alignment GtkAlignment1;
-
 		private global::Gtk.Table table2;
-
 		private global::Gtk.ColorButton colorbutton1;
-
 		private global::Gtk.HBox hbox5;
-
 		private global::Gtk.Label hotKeyLabel;
-
 		private global::Gtk.Button changebuton;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.Label label4;
-
 		private global::Gtk.Label label6;
-
 		private global::Gtk.Label label7;
-
 		private global::Gtk.Label label8;
-
 		private global::Gtk.Label label9;
-
 		private global::Gtk.SpinButton lagtimebutton;
-
 		private global::Gtk.SpinButton leadtimebutton;
-
 		private global::Gtk.Entry nameentry;
-
 		private global::Gtk.ComboBox sortmethodcombobox;
-
 		private global::Gtk.Label GtkLabel1;
-
 		private global::Gtk.Frame frame3;
-
 		private global::Gtk.Alignment GtkAlignment3;
-
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
 		private global::LongoMatch.Gui.SubCategoriesTreeView subcategoriestreeview1;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.Frame frame1;
-
 		private global::Gtk.Alignment GtkAlignment4;
-
 		private global::Gtk.Entry subcatnameentry;
-
 		private global::Gtk.Label GtkLabel3;
-
 		private global::Gtk.Frame frame2;
-
 		private global::Gtk.Alignment GtkAlignment5;
-
 		private global::Gtk.ComboBox subcatcombobox;
-
 		private global::Gtk.Label GtkLabel4;
-
 		private global::Gtk.Button addbutton;
-
 		private global::Gtk.Label GtkLabel5;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -89,7 +55,7 @@ namespace LongoMatch.Gui.Component
 			this.frame4.Name = "frame4";
 			this.frame4.ShadowType = ((global::Gtk.ShadowType)(1));
 			// Container child frame4.Gtk.Container+ContainerChild
-			this.GtkAlignment1 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment1 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment1.Name = "GtkAlignment1";
 			this.GtkAlignment1.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment1.Gtk.Container+ContainerChild
@@ -103,7 +69,7 @@ namespace LongoMatch.Gui.Component
 			this.colorbutton1.Events = ((global::Gdk.EventMask)(784));
 			this.colorbutton1.Name = "colorbutton1";
 			this.table2.Add (this.colorbutton1);
-			global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table2[this.colorbutton1]));
+			global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table2 [this.colorbutton1]));
 			w1.LeftAttach = ((uint)(3));
 			w1.RightAttach = ((uint)(4));
 			w1.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -117,7 +83,7 @@ namespace LongoMatch.Gui.Component
 			this.hotKeyLabel.Name = "hotKeyLabel";
 			this.hotKeyLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("none");
 			this.hbox5.Add (this.hotKeyLabel);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.hotKeyLabel]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.hotKeyLabel]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -128,12 +94,12 @@ namespace LongoMatch.Gui.Component
 			this.changebuton.UseUnderline = true;
 			this.changebuton.Label = global::Mono.Unix.Catalog.GetString ("Change");
 			this.hbox5.Add (this.changebuton);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.changebuton]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.changebuton]));
 			w3.Position = 1;
 			w3.Expand = false;
 			w3.Fill = false;
 			this.table2.Add (this.hbox5);
-			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table2[this.hbox5]));
+			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table2 [this.hbox5]));
 			w4.TopAttach = ((uint)(2));
 			w4.BottomAttach = ((uint)(3));
 			w4.LeftAttach = ((uint)(1));
@@ -143,21 +109,21 @@ namespace LongoMatch.Gui.Component
 			// Container child table2.Gtk.Table+TableChild
 			this.label1 = new global::Gtk.Label ();
 			this.label1.Name = "label1";
-			this.label1.Xalign = 0f;
+			this.label1.Xalign = 0F;
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Name:</b>");
 			this.label1.UseMarkup = true;
 			this.table2.Add (this.label1);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table2[this.label1]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table2 [this.label1]));
 			w5.XOptions = ((global::Gtk.AttachOptions)(4));
 			w5.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table2.Gtk.Table+TableChild
 			this.label4 = new global::Gtk.Label ();
 			this.label4.Name = "label4";
-			this.label4.Xalign = 0f;
+			this.label4.Xalign = 0F;
 			this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Color:</b>    ");
 			this.label4.UseMarkup = true;
 			this.table2.Add (this.label4);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table2[this.label4]));
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table2 [this.label4]));
 			w6.LeftAttach = ((uint)(2));
 			w6.RightAttach = ((uint)(3));
 			w6.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -165,11 +131,11 @@ namespace LongoMatch.Gui.Component
 			// Container child table2.Gtk.Table+TableChild
 			this.label6 = new global::Gtk.Label ();
 			this.label6.Name = "label6";
-			this.label6.Xalign = 0f;
+			this.label6.Xalign = 0F;
 			this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>HotKey:</b>");
 			this.label6.UseMarkup = true;
 			this.table2.Add (this.label6);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table2[this.label6]));
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table2 [this.label6]));
 			w7.TopAttach = ((uint)(2));
 			w7.BottomAttach = ((uint)(3));
 			w7.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -177,11 +143,11 @@ namespace LongoMatch.Gui.Component
 			// Container child table2.Gtk.Table+TableChild
 			this.label7 = new global::Gtk.Label ();
 			this.label7.Name = "label7";
-			this.label7.Xalign = 0f;
+			this.label7.Xalign = 0F;
 			this.label7.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lead time:</b>");
 			this.label7.UseMarkup = true;
 			this.table2.Add (this.label7);
-			global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table2[this.label7]));
+			global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table2 [this.label7]));
 			w8.TopAttach = ((uint)(1));
 			w8.BottomAttach = ((uint)(2));
 			w8.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -189,11 +155,11 @@ namespace LongoMatch.Gui.Component
 			// Container child table2.Gtk.Table+TableChild
 			this.label8 = new global::Gtk.Label ();
 			this.label8.Name = "label8";
-			this.label8.Xalign = 0f;
+			this.label8.Xalign = 0F;
 			this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lag time:</b>");
 			this.label8.UseMarkup = true;
 			this.table2.Add (this.label8);
-			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table2[this.label8]));
+			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table2 [this.label8]));
 			w9.TopAttach = ((uint)(1));
 			w9.BottomAttach = ((uint)(2));
 			w9.LeftAttach = ((uint)(2));
@@ -203,11 +169,11 @@ namespace LongoMatch.Gui.Component
 			// Container child table2.Gtk.Table+TableChild
 			this.label9 = new global::Gtk.Label ();
 			this.label9.Name = "label9";
-			this.label9.Xalign = 0f;
+			this.label9.Xalign = 0F;
 			this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Sort Method</b>");
 			this.label9.UseMarkup = true;
 			this.table2.Add (this.label9);
-			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2[this.label9]));
+			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2 [this.label9]));
 			w10.TopAttach = ((uint)(2));
 			w10.BottomAttach = ((uint)(3));
 			w10.LeftAttach = ((uint)(2));
@@ -222,7 +188,7 @@ namespace LongoMatch.Gui.Component
 			this.lagtimebutton.ClimbRate = 1;
 			this.lagtimebutton.Numeric = true;
 			this.table2.Add (this.lagtimebutton);
-			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2[this.lagtimebutton]));
+			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2 [this.lagtimebutton]));
 			w11.TopAttach = ((uint)(1));
 			w11.BottomAttach = ((uint)(2));
 			w11.LeftAttach = ((uint)(3));
@@ -236,7 +202,7 @@ namespace LongoMatch.Gui.Component
 			this.leadtimebutton.ClimbRate = 1;
 			this.leadtimebutton.Numeric = true;
 			this.table2.Add (this.leadtimebutton);
-			global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2[this.leadtimebutton]));
+			global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2 [this.leadtimebutton]));
 			w12.TopAttach = ((uint)(1));
 			w12.BottomAttach = ((uint)(2));
 			w12.LeftAttach = ((uint)(1));
@@ -250,7 +216,7 @@ namespace LongoMatch.Gui.Component
 			this.nameentry.IsEditable = true;
 			this.nameentry.InvisibleChar = 'â';
 			this.table2.Add (this.nameentry);
-			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table2[this.nameentry]));
+			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table2 [this.nameentry]));
 			w13.LeftAttach = ((uint)(1));
 			w13.RightAttach = ((uint)(2));
 			w13.YOptions = ((global::Gtk.AttachOptions)(4));
@@ -263,7 +229,7 @@ namespace LongoMatch.Gui.Component
 			this.sortmethodcombobox.Name = "sortmethodcombobox";
 			this.sortmethodcombobox.Active = 3;
 			this.table2.Add (this.sortmethodcombobox);
-			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table2[this.sortmethodcombobox]));
+			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table2 [this.sortmethodcombobox]));
 			w14.TopAttach = ((uint)(2));
 			w14.BottomAttach = ((uint)(3));
 			w14.LeftAttach = ((uint)(3));
@@ -278,7 +244,7 @@ namespace LongoMatch.Gui.Component
 			this.GtkLabel1.UseMarkup = true;
 			this.frame4.LabelWidget = this.GtkLabel1;
 			this.vbox2.Add (this.frame4);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.frame4]));
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame4]));
 			w17.Position = 0;
 			w17.Expand = false;
 			w17.Fill = false;
@@ -287,7 +253,7 @@ namespace LongoMatch.Gui.Component
 			this.frame3.Name = "frame3";
 			this.frame3.ShadowType = ((global::Gtk.ShadowType)(1));
 			// Container child frame3.Gtk.Container+ContainerChild
-			this.GtkAlignment3 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment3 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment3.Name = "GtkAlignment3";
 			this.GtkAlignment3.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment3.Gtk.Container+ContainerChild
@@ -304,7 +270,7 @@ namespace LongoMatch.Gui.Component
 			this.subcategoriestreeview1.Name = "subcategoriestreeview1";
 			this.GtkScrolledWindow.Add (this.subcategoriestreeview1);
 			this.vbox1.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.GtkScrolledWindow]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.GtkScrolledWindow]));
 			w19.Position = 0;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.hbox3 = new global::Gtk.HBox ();
@@ -315,7 +281,7 @@ namespace LongoMatch.Gui.Component
 			this.frame1.Name = "frame1";
 			this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
 			// Container child frame1.Gtk.Container+ContainerChild
-			this.GtkAlignment4 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment4 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment4.Name = "GtkAlignment4";
 			this.GtkAlignment4.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment4.Gtk.Container+ContainerChild
@@ -332,7 +298,7 @@ namespace LongoMatch.Gui.Component
 			this.GtkLabel3.UseMarkup = true;
 			this.frame1.LabelWidget = this.GtkLabel3;
 			this.hbox3.Add (this.frame1);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.frame1]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frame1]));
 			w22.Position = 0;
 			w22.Expand = false;
 			w22.Fill = false;
@@ -341,7 +307,7 @@ namespace LongoMatch.Gui.Component
 			this.frame2.Name = "frame2";
 			this.frame2.ShadowType = ((global::Gtk.ShadowType)(0));
 			// Container child frame2.Gtk.Container+ContainerChild
-			this.GtkAlignment5 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment5 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment5.Name = "GtkAlignment5";
 			this.GtkAlignment5.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment5.Gtk.Container+ContainerChild
@@ -355,7 +321,7 @@ namespace LongoMatch.Gui.Component
 			this.GtkLabel4.UseMarkup = true;
 			this.frame2.LabelWidget = this.GtkLabel4;
 			this.hbox3.Add (this.frame2);
-			global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.frame2]));
+			global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frame2]));
 			w25.Position = 1;
 			// Container child hbox3.Gtk.Box+BoxChild
 			this.addbutton = new global::Gtk.Button ();
@@ -365,7 +331,7 @@ namespace LongoMatch.Gui.Component
 			this.addbutton.Name = "addbutton";
 			this.addbutton.UseUnderline = true;
 			// Container child addbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w26 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w26 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w27 = new global::Gtk.HBox ();
 			w27.Spacing = 2;
@@ -381,12 +347,12 @@ namespace LongoMatch.Gui.Component
 			w26.Add (w27);
 			this.addbutton.Add (w26);
 			this.hbox3.Add (this.addbutton);
-			global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.addbutton]));
+			global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.addbutton]));
 			w34.Position = 2;
 			w34.Expand = false;
 			w34.Fill = false;
 			this.vbox1.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox3]));
+			global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox3]));
 			w35.Position = 1;
 			w35.Expand = false;
 			w35.Fill = false;
@@ -398,7 +364,7 @@ namespace LongoMatch.Gui.Component
 			this.GtkLabel5.UseMarkup = true;
 			this.frame3.LabelWidget = this.GtkLabel5;
 			this.vbox2.Add (this.frame3);
-			global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.frame3]));
+			global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame3]));
 			w38.Position = 1;
 			this.Add (this.vbox2);
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
index bd46bdf..adb23f6 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs
@@ -5,51 +5,29 @@ namespace LongoMatch.Gui.Component
 	public partial class DrawingToolBox
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Label toolslabel;
-
 		private global::Gtk.Table toolstable;
-
 		private global::Gtk.RadioButton circlebutton;
-
 		private global::Gtk.Image image79;
-
 		private global::Gtk.RadioButton crossbutton;
-
 		private global::Gtk.Image image83;
-
 		private global::Gtk.RadioButton eraserbutton;
-
 		private global::Gtk.Image image81;
-
 		private global::Gtk.RadioButton linebutton;
-
 		private global::Gtk.Image image82;
-
 		private global::Gtk.RadioButton penbutton;
-
 		private global::Gtk.Image image80;
-
 		private global::Gtk.RadioButton rectanglebutton;
-
 		private global::Gtk.Image image84;
-
 		private global::Gtk.Label colorslabel;
-
 		private global::Gtk.ColorButton colorbutton;
-
 		private global::Gtk.Label label3;
-
 		private global::Gtk.ComboBox combobox1;
-
 		private global::Gtk.Label transparencylabel;
-
 		private global::Gtk.SpinButton spinbutton1;
-
 		private global::Gtk.Button clearbutton;
-
 		private global::Gtk.Label label1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -63,11 +41,11 @@ namespace LongoMatch.Gui.Component
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.toolslabel = new global::Gtk.Label ();
 			this.toolslabel.Name = "toolslabel";
-			this.toolslabel.Xalign = 0f;
+			this.toolslabel.Xalign = 0F;
 			this.toolslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Tools</b>");
 			this.toolslabel.UseMarkup = true;
 			this.vbox2.Add (this.toolslabel);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.toolslabel]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.toolslabel]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
@@ -91,7 +69,7 @@ namespace LongoMatch.Gui.Component
 			this.image79.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("stock_draw-circle-unfilled.png");
 			this.circlebutton.Add (this.image79);
 			this.toolstable.Add (this.circlebutton);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.toolstable[this.circlebutton]));
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.toolstable [this.circlebutton]));
 			w3.TopAttach = ((uint)(2));
 			w3.BottomAttach = ((uint)(3));
 			w3.LeftAttach = ((uint)(1));
@@ -112,7 +90,7 @@ namespace LongoMatch.Gui.Component
 			this.image83.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("stock_draw-line-45.png");
 			this.crossbutton.Add (this.image83);
 			this.toolstable.Add (this.crossbutton);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.toolstable[this.crossbutton]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.toolstable [this.crossbutton]));
 			w5.TopAttach = ((uint)(1));
 			w5.BottomAttach = ((uint)(2));
 			w5.LeftAttach = ((uint)(1));
@@ -133,7 +111,7 @@ namespace LongoMatch.Gui.Component
 			this.image81.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-delete", global::Gtk.IconSize.Menu);
 			this.eraserbutton.Add (this.image81);
 			this.toolstable.Add (this.eraserbutton);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.toolstable[this.eraserbutton]));
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.toolstable [this.eraserbutton]));
 			w7.LeftAttach = ((uint)(1));
 			w7.RightAttach = ((uint)(2));
 			w7.YOptions = ((global::Gtk.AttachOptions)(4));
@@ -152,7 +130,7 @@ namespace LongoMatch.Gui.Component
 			this.image82.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("stock_draw-line-ends-with-arrow.png");
 			this.linebutton.Add (this.image82);
 			this.toolstable.Add (this.linebutton);
-			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.toolstable[this.linebutton]));
+			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.toolstable [this.linebutton]));
 			w9.TopAttach = ((uint)(1));
 			w9.BottomAttach = ((uint)(2));
 			w9.YOptions = ((global::Gtk.AttachOptions)(4));
@@ -172,7 +150,7 @@ namespace LongoMatch.Gui.Component
 			this.image80.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("stock_draw-freeform-line.png");
 			this.penbutton.Add (this.image80);
 			this.toolstable.Add (this.penbutton);
-			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.toolstable[this.penbutton]));
+			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.toolstable [this.penbutton]));
 			w11.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child toolstable.Gtk.Table+TableChild
 			this.rectanglebutton = new global::Gtk.RadioButton ("");
@@ -189,22 +167,22 @@ namespace LongoMatch.Gui.Component
 			this.image84.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("stock_draw-rectangle-unfilled.png");
 			this.rectanglebutton.Add (this.image84);
 			this.toolstable.Add (this.rectanglebutton);
-			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.toolstable[this.rectanglebutton]));
+			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.toolstable [this.rectanglebutton]));
 			w13.TopAttach = ((uint)(2));
 			w13.BottomAttach = ((uint)(3));
 			w13.YOptions = ((global::Gtk.AttachOptions)(4));
 			this.vbox2.Add (this.toolstable);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.toolstable]));
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.toolstable]));
 			w14.Position = 1;
 			w14.Expand = false;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.colorslabel = new global::Gtk.Label ();
 			this.colorslabel.Name = "colorslabel";
-			this.colorslabel.Xalign = 0f;
+			this.colorslabel.Xalign = 0F;
 			this.colorslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Color</b>");
 			this.colorslabel.UseMarkup = true;
 			this.vbox2.Add (this.colorslabel);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.colorslabel]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.colorslabel]));
 			w15.Position = 2;
 			w15.Expand = false;
 			w15.Fill = false;
@@ -214,18 +192,18 @@ namespace LongoMatch.Gui.Component
 			this.colorbutton.Events = ((global::Gdk.EventMask)(784));
 			this.colorbutton.Name = "colorbutton";
 			this.vbox2.Add (this.colorbutton);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.colorbutton]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.colorbutton]));
 			w16.Position = 3;
 			w16.Expand = false;
 			w16.Fill = false;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.label3 = new global::Gtk.Label ();
 			this.label3.Name = "label3";
-			this.label3.Xalign = 0f;
+			this.label3.Xalign = 0F;
 			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Width</b>");
 			this.label3.UseMarkup = true;
 			this.vbox2.Add (this.label3);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label3]));
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label3]));
 			w17.Position = 4;
 			w17.Expand = false;
 			w17.Fill = false;
@@ -240,18 +218,18 @@ namespace LongoMatch.Gui.Component
 			this.combobox1.Name = "combobox1";
 			this.combobox1.Active = 2;
 			this.vbox2.Add (this.combobox1);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.combobox1]));
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.combobox1]));
 			w18.Position = 5;
 			w18.Expand = false;
 			w18.Fill = false;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.transparencylabel = new global::Gtk.Label ();
 			this.transparencylabel.Name = "transparencylabel";
-			this.transparencylabel.Xalign = 0f;
+			this.transparencylabel.Xalign = 0F;
 			this.transparencylabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Transparency</b>");
 			this.transparencylabel.UseMarkup = true;
 			this.vbox2.Add (this.transparencylabel);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.transparencylabel]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.transparencylabel]));
 			w19.Position = 6;
 			w19.Expand = false;
 			w19.Fill = false;
@@ -265,7 +243,7 @@ namespace LongoMatch.Gui.Component
 			this.spinbutton1.Numeric = true;
 			this.spinbutton1.Value = 80;
 			this.vbox2.Add (this.spinbutton1);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.spinbutton1]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.spinbutton1]));
 			w20.Position = 7;
 			w20.Expand = false;
 			w20.Fill = false;
@@ -276,7 +254,7 @@ namespace LongoMatch.Gui.Component
 			this.clearbutton.Name = "clearbutton";
 			this.clearbutton.UseUnderline = true;
 			// Container child clearbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w22 = new global::Gtk.HBox ();
 			w22.Spacing = 2;
@@ -290,7 +268,7 @@ namespace LongoMatch.Gui.Component
 			w21.Add (w22);
 			this.clearbutton.Add (w21);
 			this.vbox2.Add (this.clearbutton);
-			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.clearbutton]));
+			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.clearbutton]));
 			w29.Position = 8;
 			w29.Expand = false;
 			w29.Fill = false;
@@ -300,7 +278,7 @@ namespace LongoMatch.Gui.Component
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Draw-><b> D</b>\nClear-><b> C</b>\nHide-><b> S</b>\nShow-><b> S</b>\n");
 			this.label1.UseMarkup = true;
 			this.vbox2.Add (this.label1);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label1]));
+			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label1]));
 			w30.Position = 9;
 			w30.Expand = false;
 			w30.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs
similarity index 99%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs
index a12c097..9536eb9 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Component
 	public partial class DrawingWidget
 	{
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
 		private global::Gtk.DrawingArea drawingarea;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs
similarity index 96%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs
index 0d68bc1..af72e56 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui.Component
 	public partial class NotesWidget
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.ScrolledWindow scrolledwindow1;
-
 		private global::Gtk.TextView textview1;
-
 		private global::Gtk.Button savebutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -37,7 +34,7 @@ namespace LongoMatch.Gui.Component
 			w1.Add (this.textview1);
 			this.scrolledwindow1.Add (w1);
 			this.vbox2.Add (this.scrolledwindow1);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.scrolledwindow1]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.scrolledwindow1]));
 			w4.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.savebutton = new global::Gtk.Button ();
@@ -48,7 +45,7 @@ namespace LongoMatch.Gui.Component
 			this.savebutton.UseUnderline = true;
 			this.savebutton.Label = "gtk-save";
 			this.vbox2.Add (this.savebutton);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.savebutton]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.savebutton]));
 			w5.Position = 1;
 			w5.Expand = false;
 			w5.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs
similarity index 91%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs
index a467a89..ececad3 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs
@@ -5,25 +5,16 @@ namespace LongoMatch.Gui.Component
 	public partial class PlayListWidget
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.ScrolledWindow scrolledwindow1;
-
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.Label label1;
-
 		private global::LongoMatch.Gui.Component.PlayListTreeView playlisttreeview1;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.Button newbutton;
-
 		private global::Gtk.Button openbutton;
-
 		private global::Gtk.Button savebutton;
-
 		private global::Gtk.Button newvideobutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -52,7 +43,7 @@ namespace LongoMatch.Gui.Component
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Load a playlist\nor create a \nnew one.");
 			this.vbox1.Add (this.label1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.label1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.label1]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -62,12 +53,12 @@ namespace LongoMatch.Gui.Component
 			this.playlisttreeview1.CanFocus = true;
 			this.playlisttreeview1.Name = "playlisttreeview1";
 			this.vbox1.Add (this.playlisttreeview1);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.playlisttreeview1]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.playlisttreeview1]));
 			w3.Position = 1;
 			w1.Add (this.vbox1);
 			this.scrolledwindow1.Add (w1);
 			this.vbox2.Add (this.scrolledwindow1);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.scrolledwindow1]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.scrolledwindow1]));
 			w6.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.hbox2 = new global::Gtk.HBox ();
@@ -81,7 +72,7 @@ namespace LongoMatch.Gui.Component
 			this.newbutton.Name = "newbutton";
 			this.newbutton.UseUnderline = true;
 			// Container child newbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w7 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w7 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w8 = new global::Gtk.HBox ();
 			w8.Spacing = 2;
@@ -95,7 +86,7 @@ namespace LongoMatch.Gui.Component
 			w7.Add (w8);
 			this.newbutton.Add (w7);
 			this.hbox2.Add (this.newbutton);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.newbutton]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.newbutton]));
 			w15.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.openbutton = new global::Gtk.Button ();
@@ -104,7 +95,7 @@ namespace LongoMatch.Gui.Component
 			this.openbutton.Name = "openbutton";
 			this.openbutton.UseUnderline = true;
 			// Container child openbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w16 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w16 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w17 = new global::Gtk.HBox ();
 			w17.Spacing = 2;
@@ -118,7 +109,7 @@ namespace LongoMatch.Gui.Component
 			w16.Add (w17);
 			this.openbutton.Add (w16);
 			this.hbox2.Add (this.openbutton);
-			global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.openbutton]));
+			global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.openbutton]));
 			w24.Position = 1;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.savebutton = new global::Gtk.Button ();
@@ -127,7 +118,7 @@ namespace LongoMatch.Gui.Component
 			this.savebutton.Name = "savebutton";
 			this.savebutton.UseUnderline = true;
 			// Container child savebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w25 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w25 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w26 = new global::Gtk.HBox ();
 			w26.Spacing = 2;
@@ -141,7 +132,7 @@ namespace LongoMatch.Gui.Component
 			w25.Add (w26);
 			this.savebutton.Add (w25);
 			this.hbox2.Add (this.savebutton);
-			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.savebutton]));
+			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.savebutton]));
 			w33.Position = 2;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.newvideobutton = new global::Gtk.Button ();
@@ -150,7 +141,7 @@ namespace LongoMatch.Gui.Component
 			this.newvideobutton.Name = "newvideobutton";
 			this.newvideobutton.UseUnderline = true;
 			// Container child newvideobutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w34 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w34 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w35 = new global::Gtk.HBox ();
 			w35.Spacing = 2;
@@ -164,10 +155,10 @@ namespace LongoMatch.Gui.Component
 			w34.Add (w35);
 			this.newvideobutton.Add (w34);
 			this.hbox2.Add (this.newvideobutton);
-			global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.newvideobutton]));
+			global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.newvideobutton]));
 			w42.Position = 3;
 			this.vbox2.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2]));
+			global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 			w43.Position = 1;
 			w43.Expand = false;
 			w43.Fill = false;
@@ -176,7 +167,6 @@ namespace LongoMatch.Gui.Component
 				this.Child.ShowAll ();
 			}
 			this.Show ();
-			this.playlisttreeview1.DragEnd += new global::Gtk.DragEndHandler (this.OnPlaylisttreeview1DragEnd);
 			this.newbutton.Clicked += new global::System.EventHandler (this.OnNewbuttonClicked);
 			this.openbutton.Clicked += new global::System.EventHandler (this.OnOpenbuttonClicked);
 			this.savebutton.Clicked += new global::System.EventHandler (this.OnSavebuttonClicked);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs
index 33aa7ec..b455842 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs
@@ -5,51 +5,29 @@ namespace LongoMatch.Gui.Component
 	public partial class PlayerProperties
 	{
 		private global::Gtk.Table table1;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Image image;
-
 		private global::Gtk.Button openbutton;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.Label bdaylabel;
-
 		private global::Gtk.Button datebutton;
-
 		private global::Gtk.SpinButton heightspinbutton;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.Label label2;
-
 		private global::Gtk.Label label3;
-
 		private global::Gtk.Label label4;
-
 		private global::Gtk.Label label5;
-
 		private global::Gtk.Label label6;
-
 		private global::Gtk.Label label7;
-
 		private global::Gtk.Label label8;
-
 		private global::Gtk.Label label9;
-
 		private global::Gtk.Entry nameentry;
-
 		private global::Gtk.Entry nationalityentry;
-
 		private global::Gtk.SpinButton numberspinbutton;
-
 		private global::Gtk.ComboBox playscombobox;
-
 		private global::Gtk.Entry positionentry;
-
 		private global::Gtk.SpinButton weightspinbutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -69,7 +47,7 @@ namespace LongoMatch.Gui.Component
 			this.image = new global::Gtk.Image ();
 			this.image.Name = "image";
 			this.hbox1.Add (this.image);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.image]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.image]));
 			w1.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.openbutton = new global::Gtk.Button ();
@@ -79,12 +57,12 @@ namespace LongoMatch.Gui.Component
 			this.openbutton.UseUnderline = true;
 			this.openbutton.Label = "gtk-open";
 			this.hbox1.Add (this.openbutton);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.openbutton]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.openbutton]));
 			w2.Position = 1;
 			w2.Expand = false;
 			w2.Fill = false;
 			this.table1.Add (this.hbox1);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox1]));
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox1]));
 			w3.TopAttach = ((uint)(8));
 			w3.BottomAttach = ((uint)(9));
 			w3.LeftAttach = ((uint)(1));
@@ -99,7 +77,7 @@ namespace LongoMatch.Gui.Component
 			this.bdaylabel = new global::Gtk.Label ();
 			this.bdaylabel.Name = "bdaylabel";
 			this.hbox2.Add (this.bdaylabel);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.bdaylabel]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.bdaylabel]));
 			w4.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.datebutton = new global::Gtk.Button ();
@@ -108,12 +86,12 @@ namespace LongoMatch.Gui.Component
 			this.datebutton.UseUnderline = true;
 			this.datebutton.Label = global::Mono.Unix.Catalog.GetString ("_Calendar");
 			this.hbox2.Add (this.datebutton);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.datebutton]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.datebutton]));
 			w5.Position = 1;
 			w5.Expand = false;
 			w5.Fill = false;
 			this.table1.Add (this.hbox2);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox2]));
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox2]));
 			w6.TopAttach = ((uint)(7));
 			w6.BottomAttach = ((uint)(8));
 			w6.LeftAttach = ((uint)(1));
@@ -130,7 +108,7 @@ namespace LongoMatch.Gui.Component
 			this.heightspinbutton.Numeric = true;
 			this.heightspinbutton.Value = 18;
 			this.table1.Add (this.heightspinbutton);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1[this.heightspinbutton]));
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.heightspinbutton]));
 			w7.TopAttach = ((uint)(4));
 			w7.BottomAttach = ((uint)(5));
 			w7.LeftAttach = ((uint)(1));
@@ -142,7 +120,7 @@ namespace LongoMatch.Gui.Component
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Name:");
 			this.table1.Add (this.label1);
-			global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+			global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1 [this.label1]));
 			w8.XOptions = ((global::Gtk.AttachOptions)(4));
 			w8.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
@@ -150,7 +128,7 @@ namespace LongoMatch.Gui.Component
 			this.label2.Name = "label2";
 			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Position:");
 			this.table1.Add (this.label2);
-			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1[this.label2]));
+			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2]));
 			w9.TopAttach = ((uint)(2));
 			w9.BottomAttach = ((uint)(3));
 			w9.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -160,7 +138,7 @@ namespace LongoMatch.Gui.Component
 			this.label3.Name = "label3";
 			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Number:");
 			this.table1.Add (this.label3);
-			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1[this.label3]));
+			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1 [this.label3]));
 			w10.TopAttach = ((uint)(3));
 			w10.BottomAttach = ((uint)(4));
 			w10.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -170,7 +148,7 @@ namespace LongoMatch.Gui.Component
 			this.label4.Name = "label4";
 			this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Photo:");
 			this.table1.Add (this.label4);
-			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1[this.label4]));
+			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4]));
 			w11.TopAttach = ((uint)(8));
 			w11.BottomAttach = ((uint)(9));
 			w11.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -180,7 +158,7 @@ namespace LongoMatch.Gui.Component
 			this.label5.Name = "label5";
 			this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Height");
 			this.table1.Add (this.label5);
-			global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1[this.label5]));
+			global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5]));
 			w12.TopAttach = ((uint)(4));
 			w12.BottomAttach = ((uint)(5));
 			w12.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -190,7 +168,7 @@ namespace LongoMatch.Gui.Component
 			this.label6.Name = "label6";
 			this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("Weight");
 			this.table1.Add (this.label6);
-			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1[this.label6]));
+			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1 [this.label6]));
 			w13.TopAttach = ((uint)(5));
 			w13.BottomAttach = ((uint)(6));
 			w13.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -200,7 +178,7 @@ namespace LongoMatch.Gui.Component
 			this.label7.Name = "label7";
 			this.label7.LabelProp = global::Mono.Unix.Catalog.GetString ("Birth day");
 			this.table1.Add (this.label7);
-			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.label7]));
+			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 [this.label7]));
 			w14.TopAttach = ((uint)(7));
 			w14.BottomAttach = ((uint)(8));
 			w14.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -210,7 +188,7 @@ namespace LongoMatch.Gui.Component
 			this.label8.Name = "label8";
 			this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("Nationality");
 			this.table1.Add (this.label8);
-			global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1[this.label8]));
+			global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1 [this.label8]));
 			w15.TopAttach = ((uint)(6));
 			w15.BottomAttach = ((uint)(7));
 			w15.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -220,7 +198,7 @@ namespace LongoMatch.Gui.Component
 			this.label9.Name = "label9";
 			this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Plays this match:");
 			this.table1.Add (this.label9);
-			global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1[this.label9]));
+			global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1 [this.label9]));
 			w16.TopAttach = ((uint)(1));
 			w16.BottomAttach = ((uint)(2));
 			w16.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -232,7 +210,7 @@ namespace LongoMatch.Gui.Component
 			this.nameentry.IsEditable = true;
 			this.nameentry.InvisibleChar = 'â';
 			this.table1.Add (this.nameentry);
-			global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1[this.nameentry]));
+			global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1 [this.nameentry]));
 			w17.LeftAttach = ((uint)(1));
 			w17.RightAttach = ((uint)(2));
 			w17.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -244,7 +222,7 @@ namespace LongoMatch.Gui.Component
 			this.nationalityentry.IsEditable = true;
 			this.nationalityentry.InvisibleChar = 'â';
 			this.table1.Add (this.nationalityentry);
-			global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table1[this.nationalityentry]));
+			global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table1 [this.nationalityentry]));
 			w18.TopAttach = ((uint)(6));
 			w18.BottomAttach = ((uint)(7));
 			w18.LeftAttach = ((uint)(1));
@@ -259,7 +237,7 @@ namespace LongoMatch.Gui.Component
 			this.numberspinbutton.ClimbRate = 1;
 			this.numberspinbutton.Numeric = true;
 			this.table1.Add (this.numberspinbutton);
-			global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1[this.numberspinbutton]));
+			global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1 [this.numberspinbutton]));
 			w19.TopAttach = ((uint)(3));
 			w19.BottomAttach = ((uint)(4));
 			w19.LeftAttach = ((uint)(1));
@@ -272,7 +250,7 @@ namespace LongoMatch.Gui.Component
 			this.playscombobox.Name = "playscombobox";
 			this.playscombobox.Active = 0;
 			this.table1.Add (this.playscombobox);
-			global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table1[this.playscombobox]));
+			global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table1 [this.playscombobox]));
 			w20.TopAttach = ((uint)(1));
 			w20.BottomAttach = ((uint)(2));
 			w20.LeftAttach = ((uint)(1));
@@ -286,7 +264,7 @@ namespace LongoMatch.Gui.Component
 			this.positionentry.IsEditable = true;
 			this.positionentry.InvisibleChar = 'â';
 			this.table1.Add (this.positionentry);
-			global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1[this.positionentry]));
+			global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1 [this.positionentry]));
 			w21.TopAttach = ((uint)(2));
 			w21.BottomAttach = ((uint)(3));
 			w21.LeftAttach = ((uint)(1));
@@ -302,7 +280,7 @@ namespace LongoMatch.Gui.Component
 			this.weightspinbutton.Numeric = true;
 			this.weightspinbutton.Value = 80;
 			this.table1.Add (this.weightspinbutton);
-			global::Gtk.Table.TableChild w22 = ((global::Gtk.Table.TableChild)(this.table1[this.weightspinbutton]));
+			global::Gtk.Table.TableChild w22 = ((global::Gtk.Table.TableChild)(this.table1 [this.weightspinbutton]));
 			w22.TopAttach = ((uint)(5));
 			w22.BottomAttach = ((uint)(6));
 			w22.LeftAttach = ((uint)(1));
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs
similarity index 99%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs
index 9130231..b0ff5dc 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Component
 	public partial class PlayersListTreeWidget
 	{
 		private global::Gtk.ScrolledWindow scrolledwindow1;
-
 		private global::LongoMatch.Gui.Component.PlayersTreeView playerstreeview;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs
index 9240454..3bf5871 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs
@@ -5,19 +5,13 @@ namespace LongoMatch.Gui.Component
 	public partial class PlayersTaggerWidget
 	{
 		private global::Gtk.Frame frame1;
-
 		private global::Gtk.Alignment GtkAlignment;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Label label2;
-
 		private global::Gtk.Label playerslabel;
-
 		private global::Gtk.Button editbutton;
-
 		private global::Gtk.Label CategoryLabel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -29,7 +23,7 @@ namespace LongoMatch.Gui.Component
 			this.frame1.Name = "frame1";
 			this.frame1.ShadowType = ((global::Gtk.ShadowType)(2));
 			// Container child frame1.Gtk.Container+ContainerChild
-			this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment.Name = "GtkAlignment";
 			this.GtkAlignment.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
@@ -39,20 +33,20 @@ namespace LongoMatch.Gui.Component
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.label2 = new global::Gtk.Label ();
 			this.label2.Name = "label2";
-			this.label2.Xalign = 0f;
+			this.label2.Xalign = 0F;
 			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Players:");
 			this.hbox1.Add (this.label2);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.label2]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.label2]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.playerslabel = new global::Gtk.Label ();
 			this.playerslabel.Name = "playerslabel";
-			this.playerslabel.Xalign = 0f;
+			this.playerslabel.Xalign = 0F;
 			this.playerslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("None");
 			this.hbox1.Add (this.playerslabel);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.playerslabel]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.playerslabel]));
 			w2.Position = 1;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.editbutton = new global::Gtk.Button ();
@@ -62,7 +56,7 @@ namespace LongoMatch.Gui.Component
 			this.editbutton.UseUnderline = true;
 			this.editbutton.Label = "gtk-edit";
 			this.hbox1.Add (this.editbutton);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.editbutton]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.editbutton]));
 			w3.Position = 2;
 			w3.Expand = false;
 			w3.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs
similarity index 99%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs
index cc942f1..7300fb0 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Component
 	public partial class PlaysListTreeWidget
 	{
 		private global::Gtk.ScrolledWindow scrolledwindow1;
-
 		private global::LongoMatch.Gui.Component.PlaysTreeView treeview;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
index 6e3bea6..afd6666 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
@@ -5,97 +5,52 @@ namespace LongoMatch.Gui.Component
 	public partial class ProjectDetailsWidget
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Table table1;
-
 		private global::Gtk.Entry competitionentry;
-
 		private global::Gtk.Label Competitionlabel;
-
 		private global::Gtk.HBox filehbox;
-
 		private global::Gtk.Entry fileEntry;
-
 		private global::Gtk.Button openbutton;
-
 		private global::Gtk.Label filelabel;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.ComboBox localcombobox;
-
 		private global::Gtk.Label localteamlabel;
-
 		private global::Gtk.Button localtemplatebutton;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.ComboBox visitorcombobox;
-
 		private global::Gtk.Label visitorteamlabel;
-
 		private global::Gtk.Button visitorbutton;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.ComboBox tagscombobox;
-
 		private global::Gtk.Button editbutton;
-
 		private global::Gtk.HBox hbox4;
-
 		private global::Gtk.SpinButton localSpinButton;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.SpinButton visitorSpinButton;
-
 		private global::Gtk.HBox hbox5;
-
 		private global::Gtk.Entry dateEntry;
-
 		private global::Gtk.Button calendarbutton;
-
 		private global::Gtk.Label label10;
-
 		private global::Gtk.Label label11;
-
 		private global::Gtk.Label label5;
-
 		private global::Gtk.Label label8;
-
 		private global::Gtk.Label label9;
-
 		private global::Gtk.Entry seasonentry;
-
 		private global::Gtk.Label seasonlabel;
-
 		private global::Gtk.Expander expander1;
-
 		private global::Gtk.Table table2;
-
 		private global::Gtk.Label audiobitratelabel;
-
 		private global::Gtk.SpinButton audiobitratespinbutton;
-
 		private global::Gtk.Label device;
-
 		private global::Gtk.ComboBox devicecombobox;
-
 		private global::Gtk.ComboBox sizecombobox;
-
 		private global::Gtk.Label sizelabel;
-
 		private global::Gtk.Label videobitratelabel1;
-
 		private global::Gtk.SpinButton videobitratespinbutton;
-
 		private global::Gtk.ComboBox videoformatcombobox;
-
 		private global::Gtk.Label videoformatlabel;
-
 		private global::Gtk.Label GtkLabel5;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -118,7 +73,7 @@ namespace LongoMatch.Gui.Component
 			this.competitionentry.IsEditable = true;
 			this.competitionentry.InvisibleChar = 'â';
 			this.table1.Add (this.competitionentry);
-			global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1[this.competitionentry]));
+			global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1 [this.competitionentry]));
 			w1.TopAttach = ((uint)(4));
 			w1.BottomAttach = ((uint)(5));
 			w1.LeftAttach = ((uint)(1));
@@ -130,7 +85,7 @@ namespace LongoMatch.Gui.Component
 			this.Competitionlabel.Name = "Competitionlabel";
 			this.Competitionlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Competition:");
 			this.table1.Add (this.Competitionlabel);
-			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.Competitionlabel]));
+			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.Competitionlabel]));
 			w2.TopAttach = ((uint)(4));
 			w2.BottomAttach = ((uint)(5));
 			w2.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -146,7 +101,7 @@ namespace LongoMatch.Gui.Component
 			this.fileEntry.IsEditable = false;
 			this.fileEntry.InvisibleChar = 'â';
 			this.filehbox.Add (this.fileEntry);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.filehbox[this.fileEntry]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.filehbox [this.fileEntry]));
 			w3.Position = 0;
 			// Container child filehbox.Gtk.Box+BoxChild
 			this.openbutton = new global::Gtk.Button ();
@@ -156,11 +111,11 @@ namespace LongoMatch.Gui.Component
 			this.openbutton.UseUnderline = true;
 			this.openbutton.Label = "gtk-open";
 			this.filehbox.Add (this.openbutton);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.filehbox[this.openbutton]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.filehbox [this.openbutton]));
 			w4.Position = 1;
 			w4.Expand = false;
 			this.table1.Add (this.filehbox);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.filehbox]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.filehbox]));
 			w5.TopAttach = ((uint)(7));
 			w5.BottomAttach = ((uint)(8));
 			w5.LeftAttach = ((uint)(1));
@@ -172,7 +127,7 @@ namespace LongoMatch.Gui.Component
 			this.filelabel.Name = "filelabel";
 			this.filelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("File:");
 			this.table1.Add (this.filelabel);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.filelabel]));
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.filelabel]));
 			w6.TopAttach = ((uint)(7));
 			w6.BottomAttach = ((uint)(8));
 			w6.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -185,13 +140,13 @@ namespace LongoMatch.Gui.Component
 			this.localcombobox = global::Gtk.ComboBox.NewText ();
 			this.localcombobox.Name = "localcombobox";
 			this.hbox1.Add (this.localcombobox);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.localcombobox]));
+			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.localcombobox]));
 			w7.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.localteamlabel = new global::Gtk.Label ();
 			this.localteamlabel.Name = "localteamlabel";
 			this.hbox1.Add (this.localteamlabel);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.localteamlabel]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.localteamlabel]));
 			w8.Position = 1;
 			w8.Expand = false;
 			w8.Fill = false;
@@ -203,13 +158,13 @@ namespace LongoMatch.Gui.Component
 			this.localtemplatebutton.UseUnderline = true;
 			this.localtemplatebutton.Label = "gtk-edit";
 			this.hbox1.Add (this.localtemplatebutton);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.localtemplatebutton]));
+			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.localtemplatebutton]));
 			w9.PackType = ((global::Gtk.PackType)(1));
 			w9.Position = 2;
 			w9.Expand = false;
 			w9.Fill = false;
 			this.table1.Add (this.hbox1);
-			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox1]));
+			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox1]));
 			w10.LeftAttach = ((uint)(1));
 			w10.RightAttach = ((uint)(2));
 			w10.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -222,13 +177,13 @@ namespace LongoMatch.Gui.Component
 			this.visitorcombobox = global::Gtk.ComboBox.NewText ();
 			this.visitorcombobox.Name = "visitorcombobox";
 			this.hbox2.Add (this.visitorcombobox);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.visitorcombobox]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.visitorcombobox]));
 			w11.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.visitorteamlabel = new global::Gtk.Label ();
 			this.visitorteamlabel.Name = "visitorteamlabel";
 			this.hbox2.Add (this.visitorteamlabel);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.visitorteamlabel]));
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.visitorteamlabel]));
 			w12.Position = 1;
 			w12.Expand = false;
 			w12.Fill = false;
@@ -240,13 +195,13 @@ namespace LongoMatch.Gui.Component
 			this.visitorbutton.UseUnderline = true;
 			this.visitorbutton.Label = "gtk-edit";
 			this.hbox2.Add (this.visitorbutton);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.visitorbutton]));
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.visitorbutton]));
 			w13.PackType = ((global::Gtk.PackType)(1));
 			w13.Position = 2;
 			w13.Expand = false;
 			w13.Fill = false;
 			this.table1.Add (this.hbox2);
-			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox2]));
+			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox2]));
 			w14.TopAttach = ((uint)(1));
 			w14.BottomAttach = ((uint)(2));
 			w14.LeftAttach = ((uint)(1));
@@ -261,7 +216,7 @@ namespace LongoMatch.Gui.Component
 			this.tagscombobox = global::Gtk.ComboBox.NewText ();
 			this.tagscombobox.Name = "tagscombobox";
 			this.hbox3.Add (this.tagscombobox);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.tagscombobox]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.tagscombobox]));
 			w15.Position = 0;
 			// Container child hbox3.Gtk.Box+BoxChild
 			this.editbutton = new global::Gtk.Button ();
@@ -271,13 +226,13 @@ namespace LongoMatch.Gui.Component
 			this.editbutton.UseUnderline = true;
 			this.editbutton.Label = "gtk-edit";
 			this.hbox3.Add (this.editbutton);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.editbutton]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.editbutton]));
 			w16.PackType = ((global::Gtk.PackType)(1));
 			w16.Position = 1;
 			w16.Expand = false;
 			w16.Fill = false;
 			this.table1.Add (this.hbox3);
-			global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox3]));
+			global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox3]));
 			w17.TopAttach = ((uint)(5));
 			w17.BottomAttach = ((uint)(6));
 			w17.LeftAttach = ((uint)(1));
@@ -296,7 +251,7 @@ namespace LongoMatch.Gui.Component
 			this.localSpinButton.ClimbRate = 1;
 			this.localSpinButton.Numeric = true;
 			this.hbox4.Add (this.localSpinButton);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.localSpinButton]));
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.localSpinButton]));
 			w18.Position = 0;
 			w18.Fill = false;
 			// Container child hbox4.Gtk.Box+BoxChild
@@ -304,7 +259,7 @@ namespace LongoMatch.Gui.Component
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("-");
 			this.hbox4.Add (this.label1);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.label1]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.label1]));
 			w19.Position = 1;
 			w19.Expand = false;
 			w19.Fill = false;
@@ -316,11 +271,11 @@ namespace LongoMatch.Gui.Component
 			this.visitorSpinButton.ClimbRate = 1;
 			this.visitorSpinButton.Numeric = true;
 			this.hbox4.Add (this.visitorSpinButton);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.visitorSpinButton]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.visitorSpinButton]));
 			w20.Position = 2;
 			w20.Fill = false;
 			this.table1.Add (this.hbox4);
-			global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox4]));
+			global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox4]));
 			w21.TopAttach = ((uint)(2));
 			w21.BottomAttach = ((uint)(3));
 			w21.LeftAttach = ((uint)(1));
@@ -337,7 +292,7 @@ namespace LongoMatch.Gui.Component
 			this.dateEntry.IsEditable = false;
 			this.dateEntry.InvisibleChar = 'â';
 			this.hbox5.Add (this.dateEntry);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.dateEntry]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.dateEntry]));
 			w22.Position = 0;
 			// Container child hbox5.Gtk.Box+BoxChild
 			this.calendarbutton = new global::Gtk.Button ();
@@ -345,7 +300,7 @@ namespace LongoMatch.Gui.Component
 			this.calendarbutton.Name = "calendarbutton";
 			this.calendarbutton.UseUnderline = true;
 			// Container child calendarbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w23 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w23 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w24 = new global::Gtk.HBox ();
 			w24.Spacing = 2;
@@ -361,12 +316,12 @@ namespace LongoMatch.Gui.Component
 			w23.Add (w24);
 			this.calendarbutton.Add (w23);
 			this.hbox5.Add (this.calendarbutton);
-			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.calendarbutton]));
+			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.calendarbutton]));
 			w31.Position = 1;
 			w31.Expand = false;
 			w31.Fill = false;
 			this.table1.Add (this.hbox5);
-			global::Gtk.Table.TableChild w32 = ((global::Gtk.Table.TableChild)(this.table1[this.hbox5]));
+			global::Gtk.Table.TableChild w32 = ((global::Gtk.Table.TableChild)(this.table1 [this.hbox5]));
 			w32.TopAttach = ((uint)(6));
 			w32.BottomAttach = ((uint)(7));
 			w32.LeftAttach = ((uint)(1));
@@ -377,7 +332,7 @@ namespace LongoMatch.Gui.Component
 			this.label10.Name = "label10";
 			this.label10.LabelProp = global::Mono.Unix.Catalog.GetString ("Visitor Team:");
 			this.table1.Add (this.label10);
-			global::Gtk.Table.TableChild w33 = ((global::Gtk.Table.TableChild)(this.table1[this.label10]));
+			global::Gtk.Table.TableChild w33 = ((global::Gtk.Table.TableChild)(this.table1 [this.label10]));
 			w33.TopAttach = ((uint)(1));
 			w33.BottomAttach = ((uint)(2));
 			w33.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -387,7 +342,7 @@ namespace LongoMatch.Gui.Component
 			this.label11.Name = "label11";
 			this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("Score:");
 			this.table1.Add (this.label11);
-			global::Gtk.Table.TableChild w34 = ((global::Gtk.Table.TableChild)(this.table1[this.label11]));
+			global::Gtk.Table.TableChild w34 = ((global::Gtk.Table.TableChild)(this.table1 [this.label11]));
 			w34.TopAttach = ((uint)(2));
 			w34.BottomAttach = ((uint)(3));
 			w34.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -397,7 +352,7 @@ namespace LongoMatch.Gui.Component
 			this.label5.Name = "label5";
 			this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Date:");
 			this.table1.Add (this.label5);
-			global::Gtk.Table.TableChild w35 = ((global::Gtk.Table.TableChild)(this.table1[this.label5]));
+			global::Gtk.Table.TableChild w35 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5]));
 			w35.TopAttach = ((uint)(6));
 			w35.BottomAttach = ((uint)(7));
 			w35.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -407,7 +362,7 @@ namespace LongoMatch.Gui.Component
 			this.label8.Name = "label8";
 			this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("Local Team:");
 			this.table1.Add (this.label8);
-			global::Gtk.Table.TableChild w36 = ((global::Gtk.Table.TableChild)(this.table1[this.label8]));
+			global::Gtk.Table.TableChild w36 = ((global::Gtk.Table.TableChild)(this.table1 [this.label8]));
 			w36.XOptions = ((global::Gtk.AttachOptions)(4));
 			w36.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
@@ -415,7 +370,7 @@ namespace LongoMatch.Gui.Component
 			this.label9.Name = "label9";
 			this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Categories Template:");
 			this.table1.Add (this.label9);
-			global::Gtk.Table.TableChild w37 = ((global::Gtk.Table.TableChild)(this.table1[this.label9]));
+			global::Gtk.Table.TableChild w37 = ((global::Gtk.Table.TableChild)(this.table1 [this.label9]));
 			w37.TopAttach = ((uint)(5));
 			w37.BottomAttach = ((uint)(6));
 			w37.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -427,7 +382,7 @@ namespace LongoMatch.Gui.Component
 			this.seasonentry.IsEditable = true;
 			this.seasonentry.InvisibleChar = 'â';
 			this.table1.Add (this.seasonentry);
-			global::Gtk.Table.TableChild w38 = ((global::Gtk.Table.TableChild)(this.table1[this.seasonentry]));
+			global::Gtk.Table.TableChild w38 = ((global::Gtk.Table.TableChild)(this.table1 [this.seasonentry]));
 			w38.TopAttach = ((uint)(3));
 			w38.BottomAttach = ((uint)(4));
 			w38.LeftAttach = ((uint)(1));
@@ -439,13 +394,13 @@ namespace LongoMatch.Gui.Component
 			this.seasonlabel.Name = "seasonlabel";
 			this.seasonlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Season:");
 			this.table1.Add (this.seasonlabel);
-			global::Gtk.Table.TableChild w39 = ((global::Gtk.Table.TableChild)(this.table1[this.seasonlabel]));
+			global::Gtk.Table.TableChild w39 = ((global::Gtk.Table.TableChild)(this.table1 [this.seasonlabel]));
 			w39.TopAttach = ((uint)(3));
 			w39.BottomAttach = ((uint)(4));
 			w39.XOptions = ((global::Gtk.AttachOptions)(4));
 			w39.YOptions = ((global::Gtk.AttachOptions)(4));
 			this.vbox2.Add (this.table1);
-			global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.table1]));
+			global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
 			w40.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.expander1 = new global::Gtk.Expander (null);
@@ -461,7 +416,7 @@ namespace LongoMatch.Gui.Component
 			this.audiobitratelabel.Name = "audiobitratelabel";
 			this.audiobitratelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Audio Bitrate (kbps):");
 			this.table2.Add (this.audiobitratelabel);
-			global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table2[this.audiobitratelabel]));
+			global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table2 [this.audiobitratelabel]));
 			w41.TopAttach = ((uint)(4));
 			w41.BottomAttach = ((uint)(5));
 			w41.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -475,7 +430,7 @@ namespace LongoMatch.Gui.Component
 			this.audiobitratespinbutton.Numeric = true;
 			this.audiobitratespinbutton.Value = 64;
 			this.table2.Add (this.audiobitratespinbutton);
-			global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.table2[this.audiobitratespinbutton]));
+			global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.table2 [this.audiobitratespinbutton]));
 			w42.TopAttach = ((uint)(4));
 			w42.BottomAttach = ((uint)(5));
 			w42.LeftAttach = ((uint)(1));
@@ -487,14 +442,14 @@ namespace LongoMatch.Gui.Component
 			this.device.Name = "device";
 			this.device.LabelProp = global::Mono.Unix.Catalog.GetString ("Device:");
 			this.table2.Add (this.device);
-			global::Gtk.Table.TableChild w43 = ((global::Gtk.Table.TableChild)(this.table2[this.device]));
+			global::Gtk.Table.TableChild w43 = ((global::Gtk.Table.TableChild)(this.table2 [this.device]));
 			w43.XOptions = ((global::Gtk.AttachOptions)(4));
 			w43.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table2.Gtk.Table+TableChild
 			this.devicecombobox = global::Gtk.ComboBox.NewText ();
 			this.devicecombobox.Name = "devicecombobox";
 			this.table2.Add (this.devicecombobox);
-			global::Gtk.Table.TableChild w44 = ((global::Gtk.Table.TableChild)(this.table2[this.devicecombobox]));
+			global::Gtk.Table.TableChild w44 = ((global::Gtk.Table.TableChild)(this.table2 [this.devicecombobox]));
 			w44.LeftAttach = ((uint)(1));
 			w44.RightAttach = ((uint)(2));
 			w44.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -503,7 +458,7 @@ namespace LongoMatch.Gui.Component
 			this.sizecombobox = global::Gtk.ComboBox.NewText ();
 			this.sizecombobox.Name = "sizecombobox";
 			this.table2.Add (this.sizecombobox);
-			global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table2[this.sizecombobox]));
+			global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table2 [this.sizecombobox]));
 			w45.TopAttach = ((uint)(2));
 			w45.BottomAttach = ((uint)(3));
 			w45.LeftAttach = ((uint)(1));
@@ -515,7 +470,7 @@ namespace LongoMatch.Gui.Component
 			this.sizelabel.Name = "sizelabel";
 			this.sizelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Size:");
 			this.table2.Add (this.sizelabel);
-			global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table2[this.sizelabel]));
+			global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table2 [this.sizelabel]));
 			w46.TopAttach = ((uint)(2));
 			w46.BottomAttach = ((uint)(3));
 			w46.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -525,7 +480,7 @@ namespace LongoMatch.Gui.Component
 			this.videobitratelabel1.Name = "videobitratelabel1";
 			this.videobitratelabel1.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Bitrate (kbps):");
 			this.table2.Add (this.videobitratelabel1);
-			global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table2[this.videobitratelabel1]));
+			global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table2 [this.videobitratelabel1]));
 			w47.TopAttach = ((uint)(3));
 			w47.BottomAttach = ((uint)(4));
 			w47.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -539,7 +494,7 @@ namespace LongoMatch.Gui.Component
 			this.videobitratespinbutton.Numeric = true;
 			this.videobitratespinbutton.Value = 4000;
 			this.table2.Add (this.videobitratespinbutton);
-			global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table2[this.videobitratespinbutton]));
+			global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table2 [this.videobitratespinbutton]));
 			w48.TopAttach = ((uint)(3));
 			w48.BottomAttach = ((uint)(4));
 			w48.LeftAttach = ((uint)(1));
@@ -550,7 +505,7 @@ namespace LongoMatch.Gui.Component
 			this.videoformatcombobox = global::Gtk.ComboBox.NewText ();
 			this.videoformatcombobox.Name = "videoformatcombobox";
 			this.table2.Add (this.videoformatcombobox);
-			global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table2[this.videoformatcombobox]));
+			global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table2 [this.videoformatcombobox]));
 			w49.TopAttach = ((uint)(1));
 			w49.BottomAttach = ((uint)(2));
 			w49.LeftAttach = ((uint)(1));
@@ -562,7 +517,7 @@ namespace LongoMatch.Gui.Component
 			this.videoformatlabel.Name = "videoformatlabel";
 			this.videoformatlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Format:");
 			this.table2.Add (this.videoformatlabel);
-			global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.table2[this.videoformatlabel]));
+			global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.table2 [this.videoformatlabel]));
 			w50.TopAttach = ((uint)(1));
 			w50.BottomAttach = ((uint)(2));
 			w50.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -574,7 +529,7 @@ namespace LongoMatch.Gui.Component
 			this.GtkLabel5.UseUnderline = true;
 			this.expander1.LabelWidget = this.GtkLabel5;
 			this.vbox2.Add (this.expander1);
-			global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.expander1]));
+			global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.expander1]));
 			w52.Position = 1;
 			w52.Expand = false;
 			w52.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
similarity index 95%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
index 5b65cb7..5655a43 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
@@ -5,17 +5,12 @@ namespace LongoMatch.Gui.Component
 	public partial class ProjectListWidget
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Label filterlabel;
-
 		private global::Gtk.Entry filterEntry;
-
 		private global::Gtk.ScrolledWindow scrolledwindow2;
-
 		private global::Gtk.TreeView treeview;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -35,7 +30,7 @@ namespace LongoMatch.Gui.Component
 			this.filterlabel.Name = "filterlabel";
 			this.filterlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Projects Search:");
 			this.hbox1.Add (this.filterlabel);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.filterlabel]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.filterlabel]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
@@ -46,10 +41,10 @@ namespace LongoMatch.Gui.Component
 			this.filterEntry.IsEditable = true;
 			this.filterEntry.InvisibleChar = 'â';
 			this.hbox1.Add (this.filterEntry);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.filterEntry]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.filterEntry]));
 			w2.Position = 1;
 			this.vbox2.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
 			w3.Position = 0;
 			w3.Expand = false;
 			w3.Fill = false;
@@ -63,7 +58,7 @@ namespace LongoMatch.Gui.Component
 			this.treeview.Name = "treeview";
 			this.scrolledwindow2.Add (this.treeview);
 			this.vbox2.Add (this.scrolledwindow2);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.scrolledwindow2]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.scrolledwindow2]));
 			w5.Position = 1;
 			this.Add (this.vbox2);
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs
index ae5591b..0bf5d6c 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui.Component
 	public partial class RenderingStateBar
 	{
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Button statebutton;
-
 		private global::Gtk.ProgressBar progressbar;
-
 		private global::Gtk.Button cancellbutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -29,13 +26,13 @@ namespace LongoMatch.Gui.Component
 			this.statebutton.UseUnderline = true;
 			this.statebutton.Label = "";
 			this.hbox1.Add (this.statebutton);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.statebutton]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.statebutton]));
 			w1.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.progressbar = new global::Gtk.ProgressBar ();
 			this.progressbar.Name = "progressbar";
 			this.hbox1.Add (this.progressbar);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.progressbar]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.progressbar]));
 			w2.Position = 1;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.cancellbutton = new global::Gtk.Button ();
@@ -43,7 +40,7 @@ namespace LongoMatch.Gui.Component
 			this.cancellbutton.Name = "cancellbutton";
 			this.cancellbutton.UseUnderline = true;
 			// Container child cancellbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w4 = new global::Gtk.HBox ();
 			w4.Spacing = 2;
@@ -57,7 +54,7 @@ namespace LongoMatch.Gui.Component
 			w3.Add (w4);
 			this.cancellbutton.Add (w3);
 			this.hbox1.Add (this.cancellbutton);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.cancellbutton]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.cancellbutton]));
 			w11.Position = 2;
 			w11.Expand = false;
 			w11.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs
similarity index 95%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs
index 64cabc4..9c8b039 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui.Component
 	public partial class StringTaggerWidget
 	{
 		private global::Gtk.Frame frame;
-
 		private global::Gtk.Alignment GtkAlignment;
-
 		private global::Gtk.HBox buttonsbox;
-
 		private global::Gtk.Label titlelabel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -23,7 +20,7 @@ namespace LongoMatch.Gui.Component
 			this.frame.Name = "frame";
 			this.frame.ShadowType = ((global::Gtk.ShadowType)(2));
 			// Container child frame.Gtk.Container+ContainerChild
-			this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment.Name = "GtkAlignment";
 			this.GtkAlignment.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs
similarity index 97%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs
index d759074..4120cb0 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Component
 	public partial class TaggerWidget
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Table table1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -24,7 +23,7 @@ namespace LongoMatch.Gui.Component
 			this.table1.RowSpacing = ((uint)(6));
 			this.table1.ColumnSpacing = ((uint)(6));
 			this.vbox2.Add (this.table1);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.table1]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs
index d5c47f3..bddff82 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs
@@ -5,23 +5,15 @@ namespace LongoMatch.Gui.Component
 	public partial class TagsTreeWidget
 	{
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
 		private global::LongoMatch.Gui.Component.TagsTreeView treeview;
-
 		private global::Gtk.VBox tagsvbox;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.ComboBox tagscombobox;
-
 		private global::Gtk.Button AddFilterButton;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.ComboBox filtercombobox;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -43,14 +35,14 @@ namespace LongoMatch.Gui.Component
 			this.treeview.Colors = false;
 			this.GtkScrolledWindow.Add (this.treeview);
 			this.vbox1.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.GtkScrolledWindow]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.GtkScrolledWindow]));
 			w2.Position = 0;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.tagsvbox = new global::Gtk.VBox ();
 			this.tagsvbox.Name = "tagsvbox";
 			this.tagsvbox.Spacing = 6;
 			this.vbox1.Add (this.tagsvbox);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.tagsvbox]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.tagsvbox]));
 			w3.Position = 1;
 			w3.Expand = false;
 			w3.Fill = false;
@@ -62,7 +54,7 @@ namespace LongoMatch.Gui.Component
 			this.tagscombobox = global::Gtk.ComboBox.NewText ();
 			this.tagscombobox.Name = "tagscombobox";
 			this.hbox1.Add (this.tagscombobox);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.tagscombobox]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.tagscombobox]));
 			w4.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.AddFilterButton = new global::Gtk.Button ();
@@ -70,7 +62,7 @@ namespace LongoMatch.Gui.Component
 			this.AddFilterButton.Name = "AddFilterButton";
 			this.AddFilterButton.UseUnderline = true;
 			// Container child AddFilterButton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w5 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w5 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w6 = new global::Gtk.HBox ();
 			w6.Spacing = 2;
@@ -86,12 +78,12 @@ namespace LongoMatch.Gui.Component
 			w5.Add (w6);
 			this.AddFilterButton.Add (w5);
 			this.hbox1.Add (this.AddFilterButton);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.AddFilterButton]));
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.AddFilterButton]));
 			w13.Position = 1;
 			w13.Expand = false;
 			w13.Fill = false;
 			this.vbox1.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1]));
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox1]));
 			w14.Position = 2;
 			w14.Expand = false;
 			w14.Fill = false;
@@ -103,10 +95,10 @@ namespace LongoMatch.Gui.Component
 			this.filtercombobox = global::Gtk.ComboBox.NewText ();
 			this.filtercombobox.Name = "filtercombobox";
 			this.hbox2.Add (this.filtercombobox);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.filtercombobox]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.filtercombobox]));
 			w15.Position = 0;
 			this.vbox1.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox2]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox2]));
 			w16.Position = 3;
 			w16.Expand = false;
 			w16.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs
similarity index 95%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs
index 51a30c8..311edf9 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs
@@ -5,13 +5,10 @@ namespace LongoMatch.Gui.Component
 	public partial class TeamTaggerWidget
 	{
 		private global::Gtk.Frame frame;
-
 		private global::Gtk.Alignment GtkAlignment;
-
 		private global::Gtk.HBox buttonsbox;
-
 		private global::Gtk.Label titlelabel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -23,7 +20,7 @@ namespace LongoMatch.Gui.Component
 			this.frame.Name = "frame";
 			this.frame.ShadowType = ((global::Gtk.ShadowType)(2));
 			// Container child frame.Gtk.Container+ContainerChild
-			this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment.Name = "GtkAlignment";
 			this.GtkAlignment.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs
index 57feb5a..ea969d6 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs
@@ -5,27 +5,17 @@ namespace LongoMatch.Gui.Component
 	public partial class TemplatesEditorBase
 	{
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.VBox mainbox;
-
 		private global::Gtk.ScrolledWindow scrolledwindow2;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.VBox upbox;
-
 		private global::Gtk.Button newprevbutton;
-
 		private global::Gtk.Button newafterbutton;
-
 		private global::Gtk.Button removebutton;
-
 		private global::Gtk.Button editbutton;
-
 		private global::Gtk.Button exportbutton;
-
 		private global::Gtk.HSeparator hseparator1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -47,10 +37,10 @@ namespace LongoMatch.Gui.Component
 			this.scrolledwindow2.Name = "scrolledwindow2";
 			this.scrolledwindow2.ShadowType = ((global::Gtk.ShadowType)(1));
 			this.mainbox.Add (this.scrolledwindow2);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.mainbox[this.scrolledwindow2]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.scrolledwindow2]));
 			w1.Position = 0;
 			this.hbox1.Add (this.mainbox);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.mainbox]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.mainbox]));
 			w2.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.vbox2 = new global::Gtk.VBox ();
@@ -61,7 +51,7 @@ namespace LongoMatch.Gui.Component
 			this.upbox.Name = "upbox";
 			this.upbox.Spacing = 6;
 			this.vbox2.Add (this.upbox);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.upbox]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.upbox]));
 			w3.Position = 0;
 			w3.Expand = false;
 			w3.Fill = false;
@@ -73,7 +63,7 @@ namespace LongoMatch.Gui.Component
 			this.newprevbutton.Name = "newprevbutton";
 			this.newprevbutton.UseUnderline = true;
 			// Container child newprevbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w4 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w4 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w5 = new global::Gtk.HBox ();
 			w5.Spacing = 2;
@@ -89,7 +79,7 @@ namespace LongoMatch.Gui.Component
 			w4.Add (w5);
 			this.newprevbutton.Add (w4);
 			this.vbox2.Add (this.newprevbutton);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.newprevbutton]));
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.newprevbutton]));
 			w12.Position = 1;
 			w12.Expand = false;
 			w12.Fill = false;
@@ -101,7 +91,7 @@ namespace LongoMatch.Gui.Component
 			this.newafterbutton.Name = "newafterbutton";
 			this.newafterbutton.UseUnderline = true;
 			// Container child newafterbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w13 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w13 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w14 = new global::Gtk.HBox ();
 			w14.Spacing = 2;
@@ -117,7 +107,7 @@ namespace LongoMatch.Gui.Component
 			w13.Add (w14);
 			this.newafterbutton.Add (w13);
 			this.vbox2.Add (this.newafterbutton);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.newafterbutton]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.newafterbutton]));
 			w21.Position = 2;
 			w21.Expand = false;
 			w21.Fill = false;
@@ -129,7 +119,7 @@ namespace LongoMatch.Gui.Component
 			this.removebutton.Name = "removebutton";
 			this.removebutton.UseUnderline = true;
 			// Container child removebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w22 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w22 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w23 = new global::Gtk.HBox ();
 			w23.Spacing = 2;
@@ -145,7 +135,7 @@ namespace LongoMatch.Gui.Component
 			w22.Add (w23);
 			this.removebutton.Add (w22);
 			this.vbox2.Add (this.removebutton);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.removebutton]));
+			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.removebutton]));
 			w30.Position = 3;
 			w30.Expand = false;
 			w30.Fill = false;
@@ -157,7 +147,7 @@ namespace LongoMatch.Gui.Component
 			this.editbutton.Name = "editbutton";
 			this.editbutton.UseUnderline = true;
 			// Container child editbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w31 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w31 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w32 = new global::Gtk.HBox ();
 			w32.Spacing = 2;
@@ -173,7 +163,7 @@ namespace LongoMatch.Gui.Component
 			w31.Add (w32);
 			this.editbutton.Add (w31);
 			this.vbox2.Add (this.editbutton);
-			global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.editbutton]));
+			global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.editbutton]));
 			w39.Position = 4;
 			w39.Expand = false;
 			w39.Fill = false;
@@ -184,7 +174,7 @@ namespace LongoMatch.Gui.Component
 			this.exportbutton.Name = "exportbutton";
 			this.exportbutton.UseUnderline = true;
 			// Container child exportbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w40 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w40 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w41 = new global::Gtk.HBox ();
 			w41.Spacing = 2;
@@ -200,7 +190,7 @@ namespace LongoMatch.Gui.Component
 			w40.Add (w41);
 			this.exportbutton.Add (w40);
 			this.vbox2.Add (this.exportbutton);
-			global::Gtk.Box.BoxChild w48 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.exportbutton]));
+			global::Gtk.Box.BoxChild w48 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.exportbutton]));
 			w48.PackType = ((global::Gtk.PackType)(1));
 			w48.Position = 5;
 			w48.Expand = false;
@@ -209,13 +199,13 @@ namespace LongoMatch.Gui.Component
 			this.hseparator1 = new global::Gtk.HSeparator ();
 			this.hseparator1.Name = "hseparator1";
 			this.vbox2.Add (this.hseparator1);
-			global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hseparator1]));
+			global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hseparator1]));
 			w49.PackType = ((global::Gtk.PackType)(1));
 			w49.Position = 6;
 			w49.Expand = false;
 			w49.Fill = false;
 			this.hbox1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox2]));
+			global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox2]));
 			w50.Position = 1;
 			w50.Expand = false;
 			w50.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
index acfcc09..4c72a59 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
@@ -5,33 +5,20 @@ namespace LongoMatch.Gui.Component
 	public partial class TimeLineWidget
 	{
 		private global::Gtk.VBox vbox3;
-
 		private global::Gtk.HSeparator hseparator1;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.VBox leftbox;
-
 		private global::Gtk.HBox toolsbox;
-
 		private global::Gtk.Button fitbutton;
-
 		private global::Gtk.HScale zoomscale;
-
 		private global::Gtk.Alignment categoriesalignment1;
-
 		private global::Gtk.HBox categoriesbox;
-
 		private global::Gtk.VSeparator vseparator1;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.VBox timescalebox;
-
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
 		private global::Gtk.VBox vbox1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -46,7 +33,7 @@ namespace LongoMatch.Gui.Component
 			this.hseparator1 = new global::Gtk.HSeparator ();
 			this.hseparator1.Name = "hseparator1";
 			this.vbox3.Add (this.hseparator1);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hseparator1]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hseparator1]));
 			w1.Position = 0;
 			w1.Expand = false;
 			w1.Fill = false;
@@ -66,7 +53,7 @@ namespace LongoMatch.Gui.Component
 			this.fitbutton.Name = "fitbutton";
 			this.fitbutton.UseUnderline = true;
 			// Container child fitbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w3 = new global::Gtk.HBox ();
 			w3.Spacing = 2;
@@ -80,7 +67,7 @@ namespace LongoMatch.Gui.Component
 			w2.Add (w3);
 			this.fitbutton.Add (w2);
 			this.toolsbox.Add (this.fitbutton);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.toolsbox[this.fitbutton]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.toolsbox [this.fitbutton]));
 			w10.Position = 0;
 			w10.Expand = false;
 			w10.Fill = false;
@@ -98,15 +85,15 @@ namespace LongoMatch.Gui.Component
 			this.zoomscale.Digits = 0;
 			this.zoomscale.ValuePos = ((global::Gtk.PositionType)(2));
 			this.toolsbox.Add (this.zoomscale);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.toolsbox[this.zoomscale]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.toolsbox [this.zoomscale]));
 			w11.Position = 1;
 			this.leftbox.Add (this.toolsbox);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.leftbox[this.toolsbox]));
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.leftbox [this.toolsbox]));
 			w12.Position = 0;
 			w12.Expand = false;
 			w12.Fill = false;
 			// Container child leftbox.Gtk.Box+BoxChild
-			this.categoriesalignment1 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
+			this.categoriesalignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
 			this.categoriesalignment1.Name = "categoriesalignment1";
 			// Container child categoriesalignment1.Gtk.Container+ContainerChild
 			this.categoriesbox = new global::Gtk.HBox ();
@@ -114,10 +101,10 @@ namespace LongoMatch.Gui.Component
 			this.categoriesbox.Spacing = 6;
 			this.categoriesalignment1.Add (this.categoriesbox);
 			this.leftbox.Add (this.categoriesalignment1);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.leftbox[this.categoriesalignment1]));
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.leftbox [this.categoriesalignment1]));
 			w14.Position = 1;
 			this.hbox3.Add (this.leftbox);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.leftbox]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.leftbox]));
 			w15.Position = 0;
 			w15.Expand = false;
 			w15.Fill = false;
@@ -125,7 +112,7 @@ namespace LongoMatch.Gui.Component
 			this.vseparator1 = new global::Gtk.VSeparator ();
 			this.vseparator1.Name = "vseparator1";
 			this.hbox3.Add (this.vseparator1);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vseparator1]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.vseparator1]));
 			w16.Position = 1;
 			w16.Expand = false;
 			w16.Fill = false;
@@ -138,7 +125,7 @@ namespace LongoMatch.Gui.Component
 			this.timescalebox.Name = "timescalebox";
 			this.timescalebox.Spacing = 6;
 			this.vbox2.Add (this.timescalebox);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.timescalebox]));
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.timescalebox]));
 			w17.Position = 0;
 			w17.Expand = false;
 			w17.Fill = false;
@@ -155,13 +142,13 @@ namespace LongoMatch.Gui.Component
 			w18.Add (this.vbox1);
 			this.GtkScrolledWindow.Add (w18);
 			this.vbox2.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.GtkScrolledWindow]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.GtkScrolledWindow]));
 			w21.Position = 1;
 			this.hbox3.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vbox2]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.vbox2]));
 			w22.Position = 2;
 			this.vbox3.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox3]));
+			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox3]));
 			w23.Position = 1;
 			this.Add (this.vbox3);
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
similarity index 96%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
index 62f30d3..9399245 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs
@@ -5,11 +5,9 @@ namespace LongoMatch.Gui.Dialog
 	public partial class BusyDialog
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Label messagelabel;
-
 		private global::Gtk.ProgressBar progressbar1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -32,13 +30,13 @@ namespace LongoMatch.Gui.Dialog
 			this.messagelabel = new global::Gtk.Label ();
 			this.messagelabel.Name = "messagelabel";
 			this.vbox2.Add (this.messagelabel);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.messagelabel]));
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.messagelabel]));
 			w1.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.progressbar1 = new global::Gtk.ProgressBar ();
 			this.progressbar1.Name = "progressbar1";
 			this.vbox2.Add (this.progressbar1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.progressbar1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.progressbar1]));
 			w2.Position = 1;
 			w2.Expand = false;
 			w2.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs
index 2df7c5c..2565c16 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs
@@ -5,19 +5,13 @@ namespace LongoMatch.Gui.Dialog
 	public partial class DrawingTool
 	{
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::LongoMatch.Gui.Component.DrawingToolBox drawingtoolbox1;
-
 		private global::Gtk.Button savetoprojectbutton;
-
 		private global::Gtk.Button savebutton;
-
 		private global::LongoMatch.Gui.Component.DrawingWidget drawingwidget1;
-
 		private global::Gtk.Button button271;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -47,7 +41,7 @@ namespace LongoMatch.Gui.Dialog
 			this.drawingtoolbox1.Events = ((global::Gdk.EventMask)(256));
 			this.drawingtoolbox1.Name = "drawingtoolbox1";
 			this.vbox2.Add (this.drawingtoolbox1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.drawingtoolbox1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.drawingtoolbox1]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -57,7 +51,7 @@ namespace LongoMatch.Gui.Dialog
 			this.savetoprojectbutton.Name = "savetoprojectbutton";
 			this.savetoprojectbutton.UseUnderline = true;
 			// Container child savetoprojectbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w4 = new global::Gtk.HBox ();
 			w4.Spacing = 2;
@@ -73,7 +67,7 @@ namespace LongoMatch.Gui.Dialog
 			w3.Add (w4);
 			this.savetoprojectbutton.Add (w3);
 			this.vbox2.Add (this.savetoprojectbutton);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.savetoprojectbutton]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.savetoprojectbutton]));
 			w11.PackType = ((global::Gtk.PackType)(1));
 			w11.Position = 1;
 			w11.Expand = false;
@@ -84,7 +78,7 @@ namespace LongoMatch.Gui.Dialog
 			this.savebutton.Name = "savebutton";
 			this.savebutton.UseUnderline = true;
 			// Container child savebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w13 = new global::Gtk.HBox ();
 			w13.Spacing = 2;
@@ -100,13 +94,13 @@ namespace LongoMatch.Gui.Dialog
 			w12.Add (w13);
 			this.savebutton.Add (w12);
 			this.vbox2.Add (this.savebutton);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.savebutton]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.savebutton]));
 			w20.PackType = ((global::Gtk.PackType)(1));
 			w20.Position = 2;
 			w20.Expand = false;
 			w20.Fill = false;
 			this.hbox1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox2]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox2]));
 			w21.Position = 0;
 			w21.Expand = false;
 			w21.Fill = false;
@@ -115,10 +109,10 @@ namespace LongoMatch.Gui.Dialog
 			this.drawingwidget1.Events = ((global::Gdk.EventMask)(256));
 			this.drawingwidget1.Name = "drawingwidget1";
 			this.hbox1.Add (this.drawingwidget1);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.drawingwidget1]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.drawingwidget1]));
 			w22.Position = 1;
 			w1.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(w1[this.hbox1]));
+			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
 			w23.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.DrawingTool.ActionArea
 			global::Gtk.HButtonBox w24 = this.ActionArea;
@@ -133,7 +127,7 @@ namespace LongoMatch.Gui.Dialog
 			this.button271.UseUnderline = true;
 			this.button271.Label = "";
 			this.AddActionWidget (this.button271, 0);
-			global::Gtk.ButtonBox.ButtonBoxChild w25 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w24[this.button271]));
+			global::Gtk.ButtonBox.ButtonBoxChild w25 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w24 [this.button271]));
 			w25.Expand = false;
 			w25.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
similarity index 90%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
index 8bfb87c..3f86b79 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Dialog
 	public partial class EditCategoryDialog
 	{
 		private global::LongoMatch.Gui.Component.CategoryProperties timenodeproperties2;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -26,7 +25,7 @@ namespace LongoMatch.Gui.Dialog
 			this.timenodeproperties2.Events = ((global::Gdk.EventMask)(256));
 			this.timenodeproperties2.Name = "timenodeproperties2";
 			w1.Add (this.timenodeproperties2);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.timenodeproperties2]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.timenodeproperties2]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.EditCategoryDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -43,14 +42,14 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w4.Expand = false;
 			w4.Fill = false;
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
 			}
-			this.DefaultWidth = 492;
-			this.DefaultHeight = 191;
+			this.DefaultWidth = 522;
+			this.DefaultHeight = 280;
 			this.Show ();
 		}
 	}
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs
index 2649897..c969615 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Dialog
 	public partial class EditPlayerDialog
 	{
 		private global::LongoMatch.Gui.Component.PlayerProperties playerproperties1;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -28,7 +27,7 @@ namespace LongoMatch.Gui.Dialog
 			this.playerproperties1.Events = ((global::Gdk.EventMask)(256));
 			this.playerproperties1.Name = "playerproperties1";
 			w1.Add (this.playerproperties1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.playerproperties1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.playerproperties1]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.EditPlayerDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -45,7 +44,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w4.Expand = false;
 			w4.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs
index 30bd65a..2cc66b7 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs
@@ -5,23 +5,15 @@ namespace LongoMatch.Gui.Dialog
 	public partial class EndCaptureDialog
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.Image image439;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.Button returnbutton;
-
 		private global::Gtk.Button quitbutton;
-
 		private global::Gtk.Button savebutton;
-
 		private global::Gtk.Button buttonCancel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -48,7 +40,7 @@ namespace LongoMatch.Gui.Dialog
 			this.image439.Name = "image439";
 			this.image439.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_dialog-question", global::Gtk.IconSize.Dialog);
 			this.hbox2.Add (this.image439);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.image439]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.image439]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -59,10 +51,10 @@ namespace LongoMatch.Gui.Dialog
 			this.label1.UseMarkup = true;
 			this.label1.Justify = ((global::Gtk.Justification)(2));
 			this.hbox2.Add (this.label1);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.label1]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.label1]));
 			w3.Position = 1;
 			this.vbox2.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 			w4.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.hbox3 = new global::Gtk.HBox ();
@@ -74,7 +66,7 @@ namespace LongoMatch.Gui.Dialog
 			this.returnbutton.Name = "returnbutton";
 			this.returnbutton.UseUnderline = true;
 			// Container child returnbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w5 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w5 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w6 = new global::Gtk.HBox ();
 			w6.Spacing = 2;
@@ -90,7 +82,7 @@ namespace LongoMatch.Gui.Dialog
 			w5.Add (w6);
 			this.returnbutton.Add (w5);
 			this.hbox3.Add (this.returnbutton);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.returnbutton]));
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.returnbutton]));
 			w13.Position = 0;
 			w13.Fill = false;
 			// Container child hbox3.Gtk.Box+BoxChild
@@ -99,7 +91,7 @@ namespace LongoMatch.Gui.Dialog
 			this.quitbutton.Name = "quitbutton";
 			this.quitbutton.UseUnderline = true;
 			// Container child quitbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w14 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w14 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w15 = new global::Gtk.HBox ();
 			w15.Spacing = 2;
@@ -115,7 +107,7 @@ namespace LongoMatch.Gui.Dialog
 			w14.Add (w15);
 			this.quitbutton.Add (w14);
 			this.hbox3.Add (this.quitbutton);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.quitbutton]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.quitbutton]));
 			w22.Position = 1;
 			w22.Fill = false;
 			// Container child hbox3.Gtk.Box+BoxChild
@@ -124,7 +116,7 @@ namespace LongoMatch.Gui.Dialog
 			this.savebutton.Name = "savebutton";
 			this.savebutton.UseUnderline = true;
 			// Container child savebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w23 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w23 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w24 = new global::Gtk.HBox ();
 			w24.Spacing = 2;
@@ -140,16 +132,16 @@ namespace LongoMatch.Gui.Dialog
 			w23.Add (w24);
 			this.savebutton.Add (w23);
 			this.hbox3.Add (this.savebutton);
-			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.savebutton]));
+			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.savebutton]));
 			w31.Position = 2;
 			w31.Fill = false;
 			this.vbox2.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox3]));
+			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox3]));
 			w32.Position = 1;
 			w32.Expand = false;
 			w32.Fill = false;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w33.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.EndCaptureDialog.ActionArea
 			global::Gtk.HButtonBox w34 = this.ActionArea;
@@ -167,14 +159,14 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w35 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w34[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w35 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w34 [this.buttonCancel]));
 			w35.Expand = false;
 			w35.Fill = false;
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
 			}
-			this.DefaultWidth = 517;
-			this.DefaultHeight = 175;
+			this.DefaultWidth = 566;
+			this.DefaultHeight = 178;
 			w34.Hide ();
 			this.Show ();
 			this.returnbutton.Clicked += new global::System.EventHandler (this.OnQuit);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs
similarity index 91%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs
index 61634e6..a3a32ae 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs
@@ -5,25 +5,16 @@ namespace LongoMatch.Gui.Dialog
 	public partial class EntryDialog
 	{
 		private global::Gtk.Table table1;
-
 		private global::Gtk.CheckButton checkbutton;
-
 		private global::Gtk.Entry entry1;
-
 		private global::Gtk.Label existentemplatelabel;
-
 		private global::Gtk.Label label2;
-
 		private global::Gtk.Label playerslabel;
-
 		private global::Gtk.SpinButton playersspinbutton;
-
 		private global::Gtk.ComboBox combobox;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -53,7 +44,7 @@ namespace LongoMatch.Gui.Dialog
 			this.checkbutton.DrawIndicator = true;
 			this.checkbutton.UseUnderline = true;
 			this.table1.Add (this.checkbutton);
-			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbutton]));
+			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.checkbutton]));
 			w2.TopAttach = ((uint)(2));
 			w2.BottomAttach = ((uint)(3));
 			w2.LeftAttach = ((uint)(1));
@@ -66,7 +57,7 @@ namespace LongoMatch.Gui.Dialog
 			this.entry1.IsEditable = true;
 			this.entry1.InvisibleChar = 'â';
 			this.table1.Add (this.entry1);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.entry1]));
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry1]));
 			w3.LeftAttach = ((uint)(1));
 			w3.RightAttach = ((uint)(2));
 			w3.YOptions = ((global::Gtk.AttachOptions)(4));
@@ -75,25 +66,25 @@ namespace LongoMatch.Gui.Dialog
 			this.existentemplatelabel.Name = "existentemplatelabel";
 			this.existentemplatelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Copy existent template:");
 			this.table1.Add (this.existentemplatelabel);
-			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1[this.existentemplatelabel]));
+			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.existentemplatelabel]));
 			w4.TopAttach = ((uint)(2));
 			w4.BottomAttach = ((uint)(3));
 			w4.XOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
 			this.label2 = new global::Gtk.Label ();
 			this.label2.Name = "label2";
-			this.label2.Xalign = 0f;
+			this.label2.Xalign = 0F;
 			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Name:");
 			this.table1.Add (this.label2);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.label2]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2]));
 			w5.XOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
 			this.playerslabel = new global::Gtk.Label ();
 			this.playerslabel.Name = "playerslabel";
-			this.playerslabel.Xalign = 0f;
+			this.playerslabel.Xalign = 0F;
 			this.playerslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Players:");
 			this.table1.Add (this.playerslabel);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.playerslabel]));
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.playerslabel]));
 			w6.TopAttach = ((uint)(1));
 			w6.BottomAttach = ((uint)(2));
 			w6.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -106,7 +97,7 @@ namespace LongoMatch.Gui.Dialog
 			this.playersspinbutton.Numeric = true;
 			this.playersspinbutton.Value = 15;
 			this.table1.Add (this.playersspinbutton);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1[this.playersspinbutton]));
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.playersspinbutton]));
 			w7.TopAttach = ((uint)(1));
 			w7.BottomAttach = ((uint)(2));
 			w7.LeftAttach = ((uint)(1));
@@ -114,14 +105,14 @@ namespace LongoMatch.Gui.Dialog
 			w7.XOptions = ((global::Gtk.AttachOptions)(4));
 			w7.YOptions = ((global::Gtk.AttachOptions)(0));
 			w1.Add (this.table1);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(w1[this.table1]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(w1 [this.table1]));
 			w8.Position = 0;
 			// Container child dialog1_VBox.Gtk.Box+BoxChild
 			this.combobox = global::Gtk.ComboBox.NewText ();
 			this.combobox.Sensitive = false;
 			this.combobox.Name = "combobox";
 			w1.Add (this.combobox);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1[this.combobox]));
+			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.combobox]));
 			w9.Position = 1;
 			w9.Expand = false;
 			w9.Fill = false;
@@ -140,7 +131,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonCancel]));
 			w11.Expand = false;
 			w11.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -152,7 +143,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w12 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w12 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
 			w12.Position = 1;
 			w12.Expand = false;
 			w12.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs
index e0189f4..4f63b1d 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs
@@ -5,15 +5,11 @@ namespace LongoMatch.Gui.Dialog
 	public partial class FramesCaptureProgressDialog
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.ProgressBar progressbar;
-
 		private global::Gtk.Image image;
-
 		private global::Gtk.Button okbutton;
-
 		private global::Gtk.Button cancelbutton;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -41,18 +37,18 @@ namespace LongoMatch.Gui.Dialog
 			this.progressbar = new global::Gtk.ProgressBar ();
 			this.progressbar.Name = "progressbar";
 			this.vbox2.Add (this.progressbar);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.progressbar]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.progressbar]));
 			w2.Position = 0;
 			w2.Fill = false;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.image = new global::Gtk.Image ();
 			this.image.Name = "image";
 			this.vbox2.Add (this.image);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.image]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.image]));
 			w3.PackType = ((global::Gtk.PackType)(1));
 			w3.Position = 1;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w4.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.ActionArea
 			global::Gtk.HButtonBox w5 = this.ActionArea;
@@ -68,7 +64,7 @@ namespace LongoMatch.Gui.Dialog
 			this.okbutton.UseUnderline = true;
 			this.okbutton.Label = "gtk-ok";
 			this.AddActionWidget (this.okbutton, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5[this.okbutton]));
+			global::Gtk.ButtonBox.ButtonBoxChild w6 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5 [this.okbutton]));
 			w6.Expand = false;
 			w6.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -80,7 +76,7 @@ namespace LongoMatch.Gui.Dialog
 			this.cancelbutton.UseUnderline = true;
 			this.cancelbutton.Label = "gtk-cancel";
 			this.AddActionWidget (this.cancelbutton, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w7 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5[this.cancelbutton]));
+			global::Gtk.ButtonBox.ButtonBoxChild w7 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w5 [this.cancelbutton]));
 			w7.Position = 1;
 			w7.Expand = false;
 			w7.Fill = false;
@@ -88,7 +84,7 @@ namespace LongoMatch.Gui.Dialog
 				this.Child.ShowAll ();
 			}
 			this.DefaultWidth = 400;
-			this.DefaultHeight = 148;
+			this.DefaultHeight = 149;
 			this.okbutton.Hide ();
 			this.Show ();
 			this.cancelbutton.Clicked += new global::System.EventHandler (this.OnButtonCancelClicked);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs
index 537d0e0..0e65282 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Dialog
 	public partial class HotKeySelectorDialog
 	{
 		private global::Gtk.Label label1;
-
 		private global::Gtk.Button buttonCancel;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -28,7 +27,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Press a key combination using  Shift+key or Alt+key.\nHotkeys with a single key are also allowed with Ctrl+key.");
 			w1.Add (this.label1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.label1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.label1]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.HotKeySelectorDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -45,14 +44,14 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonCancel]));
 			w4.Expand = false;
 			w4.Fill = false;
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
 			}
 			this.DefaultWidth = 385;
-			this.DefaultHeight = 94;
+			this.DefaultHeight = 109;
 			this.Show ();
 		}
 	}
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs
index e7e7e91..87645aa 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs
@@ -5,11 +5,9 @@ namespace LongoMatch.Gui.Dialog
 	public partial class NewProjectDialog
 	{
 		private global::LongoMatch.Gui.Component.ProjectDetailsWidget fdwidget;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -35,7 +33,7 @@ namespace LongoMatch.Gui.Dialog
 			this.fdwidget.VisitorGoals = 0;
 			this.fdwidget.Date = new global::System.DateTime (0);
 			w1.Add (this.fdwidget);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.fdwidget]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.fdwidget]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.NewProjectDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -52,7 +50,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonCancel]));
 			w4.Expand = false;
 			w4.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -64,7 +62,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w5.Position = 1;
 			w5.Expand = false;
 			w5.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs
index 08a07a6..94a4faf 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs
@@ -5,11 +5,9 @@ namespace LongoMatch.Gui.Dialog
 	public partial class OpenProjectDialog
 	{
 		private global::LongoMatch.Gui.Component.ProjectListWidget projectlistwidget;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -31,7 +29,7 @@ namespace LongoMatch.Gui.Dialog
 			this.projectlistwidget.Events = ((global::Gdk.EventMask)(256));
 			this.projectlistwidget.Name = "projectlistwidget";
 			w1.Add (this.projectlistwidget);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.projectlistwidget]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.projectlistwidget]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.OpenProjectDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -48,7 +46,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonCancel]));
 			w4.Expand = false;
 			w4.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -61,7 +59,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-open";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w5.Position = 1;
 			w5.Expand = false;
 			w5.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs
index a7eb4ed..22d0b24 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs
@@ -5,11 +5,9 @@ namespace LongoMatch.Gui.Dialog
 	public partial class PlayersSelectionDialog
 	{
 		private global::Gtk.Table table1;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -31,7 +29,7 @@ namespace LongoMatch.Gui.Dialog
 			this.table1.RowSpacing = ((uint)(6));
 			this.table1.ColumnSpacing = ((uint)(6));
 			w1.Add (this.table1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.table1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.table1]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.PlayersSelectionDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -48,7 +46,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonCancel]));
 			w4.Expand = false;
 			w4.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -60,7 +58,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w5.Position = 1;
 			w5.Expand = false;
 			w5.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
index 72e5557..152dc39 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs
@@ -5,29 +5,18 @@ namespace LongoMatch.Gui.Dialog
 	public partial class ProjectSelectionDialog
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.RadioButton fromfileradiobutton;
-
 		private global::Gtk.Image image61;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.RadioButton liveradiobutton;
-
 		private global::Gtk.Image image63;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.RadioButton fakeliveradiobutton;
-
 		private global::Gtk.Image image62;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -62,19 +51,19 @@ namespace LongoMatch.Gui.Dialog
 			this.fromfileradiobutton.FocusOnClick = false;
 			this.fromfileradiobutton.Group = new global::GLib.SList (global::System.IntPtr.Zero);
 			this.hbox1.Add (this.fromfileradiobutton);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.fromfileradiobutton]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.fromfileradiobutton]));
 			w2.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.image61 = new global::Gtk.Image ();
 			this.image61.Name = "image61";
 			this.image61.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("video.png");
 			this.hbox1.Add (this.image61);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.image61]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.image61]));
 			w3.Position = 1;
 			w3.Expand = false;
 			w3.Fill = false;
 			this.vbox2.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
 			w4.Position = 0;
 			w4.Expand = false;
 			w4.Fill = false;
@@ -90,19 +79,19 @@ namespace LongoMatch.Gui.Dialog
 			this.liveradiobutton.UseUnderline = true;
 			this.liveradiobutton.Group = this.fromfileradiobutton.Group;
 			this.hbox2.Add (this.liveradiobutton);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.liveradiobutton]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.liveradiobutton]));
 			w5.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.image63 = new global::Gtk.Image ();
 			this.image63.Name = "image63";
 			this.image63.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("camera-video.png");
 			this.hbox2.Add (this.image63);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.image63]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.image63]));
 			w6.Position = 1;
 			w6.Expand = false;
 			w6.Fill = false;
 			this.vbox2.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2]));
+			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 			w7.Position = 1;
 			w7.Expand = false;
 			w7.Fill = false;
@@ -118,24 +107,24 @@ namespace LongoMatch.Gui.Dialog
 			this.fakeliveradiobutton.UseUnderline = true;
 			this.fakeliveradiobutton.Group = this.fromfileradiobutton.Group;
 			this.hbox3.Add (this.fakeliveradiobutton);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.fakeliveradiobutton]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.fakeliveradiobutton]));
 			w8.Position = 0;
 			// Container child hbox3.Gtk.Box+BoxChild
 			this.image62 = new global::Gtk.Image ();
 			this.image62.Name = "image62";
 			this.image62.Pixbuf = global::Gdk.Pixbuf.LoadFromResource ("camera-video.png");
 			this.hbox3.Add (this.image62);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.image62]));
+			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.image62]));
 			w9.Position = 1;
 			w9.Expand = false;
 			w9.Fill = false;
 			this.vbox2.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox3]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox3]));
 			w10.Position = 2;
 			w10.Expand = false;
 			w10.Fill = false;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w11.Position = 0;
 			w11.Expand = false;
 			w11.Fill = false;
@@ -154,7 +143,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w13 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w12[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w13 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w12 [this.buttonCancel]));
 			w13.Expand = false;
 			w13.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -166,15 +155,15 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w14 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w12[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w14 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w12 [this.buttonOk]));
 			w14.Position = 1;
 			w14.Expand = false;
 			w14.Fill = false;
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
 			}
-			this.DefaultWidth = 298;
-			this.DefaultHeight = 179;
+			this.DefaultWidth = 332;
+			this.DefaultHeight = 183;
 			this.Show ();
 		}
 	}
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs
index 4d45fcf..0b86aa6 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs
@@ -5,33 +5,20 @@ namespace LongoMatch.Gui.Dialog
 	public partial class ProjectsManager
 	{
 		private global::Gtk.VBox dialog1_VBox1;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.HPaned hpaned1;
-
 		private global::LongoMatch.Gui.Component.ProjectListWidget projectlistwidget1;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Frame frame1;
-
 		private global::Gtk.Alignment GtkAlignment2;
-
 		private global::LongoMatch.Gui.Component.ProjectDetailsWidget projectdetails;
-
 		private global::Gtk.Label GtkLabel6;
-
 		private global::Gtk.Button saveButton;
-
 		private global::Gtk.Button deleteButton;
-
 		private global::Gtk.Button exportbutton;
-
 		private global::Gtk.HSeparator hseparator3;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -66,7 +53,7 @@ namespace LongoMatch.Gui.Dialog
 			this.projectlistwidget1.Events = ((global::Gdk.EventMask)(256));
 			this.projectlistwidget1.Name = "projectlistwidget1";
 			this.hpaned1.Add (this.projectlistwidget1);
-			global::Gtk.Paned.PanedChild w2 = ((global::Gtk.Paned.PanedChild)(this.hpaned1[this.projectlistwidget1]));
+			global::Gtk.Paned.PanedChild w2 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.projectlistwidget1]));
 			w2.Resize = false;
 			// Container child hpaned1.Gtk.Paned+PanedChild
 			this.vbox2 = new global::Gtk.VBox ();
@@ -77,7 +64,7 @@ namespace LongoMatch.Gui.Dialog
 			this.frame1.Name = "frame1";
 			this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
 			// Container child frame1.Gtk.Container+ContainerChild
-			this.GtkAlignment2 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment2 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment2.Name = "GtkAlignment2";
 			this.GtkAlignment2.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment2.Gtk.Container+ContainerChild
@@ -97,7 +84,7 @@ namespace LongoMatch.Gui.Dialog
 			this.GtkLabel6.UseMarkup = true;
 			this.frame1.LabelWidget = this.GtkLabel6;
 			this.vbox2.Add (this.frame1);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.frame1]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame1]));
 			w5.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.saveButton = new global::Gtk.Button ();
@@ -109,7 +96,7 @@ namespace LongoMatch.Gui.Dialog
 			this.saveButton.UseUnderline = true;
 			this.saveButton.Label = "gtk-save";
 			this.vbox2.Add (this.saveButton);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.saveButton]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.saveButton]));
 			w6.Position = 1;
 			w6.Expand = false;
 			w6.Fill = false;
@@ -123,7 +110,7 @@ namespace LongoMatch.Gui.Dialog
 			this.deleteButton.UseUnderline = true;
 			this.deleteButton.Label = "gtk-delete";
 			this.vbox2.Add (this.deleteButton);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.deleteButton]));
+			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.deleteButton]));
 			w7.Position = 2;
 			w7.Expand = false;
 			w7.Fill = false;
@@ -135,7 +122,7 @@ namespace LongoMatch.Gui.Dialog
 			this.exportbutton.Name = "exportbutton";
 			this.exportbutton.UseUnderline = true;
 			// Container child exportbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w8 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w8 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w9 = new global::Gtk.HBox ();
 			w9.Spacing = 2;
@@ -151,28 +138,28 @@ namespace LongoMatch.Gui.Dialog
 			w8.Add (w9);
 			this.exportbutton.Add (w8);
 			this.vbox2.Add (this.exportbutton);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.exportbutton]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.exportbutton]));
 			w16.Position = 3;
 			w16.Expand = false;
 			w16.Fill = false;
 			this.hpaned1.Add (this.vbox2);
 			this.hbox2.Add (this.hpaned1);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.hpaned1]));
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.hpaned1]));
 			w18.Position = 0;
 			this.dialog1_VBox1.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.dialog1_VBox1[this.hbox2]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.dialog1_VBox1 [this.hbox2]));
 			w19.Position = 0;
 			// Container child dialog1_VBox1.Gtk.Box+BoxChild
 			this.hseparator3 = new global::Gtk.HSeparator ();
 			this.hseparator3.Name = "hseparator3";
 			this.dialog1_VBox1.Add (this.hseparator3);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.dialog1_VBox1[this.hseparator3]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.dialog1_VBox1 [this.hseparator3]));
 			w20.PackType = ((global::Gtk.PackType)(1));
 			w20.Position = 1;
 			w20.Expand = false;
 			w20.Fill = false;
 			w1.Add (this.dialog1_VBox1);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(w1[this.dialog1_VBox1]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(w1 [this.dialog1_VBox1]));
 			w21.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.ProjectsManager.ActionArea
 			global::Gtk.HButtonBox w22 = this.ActionArea;
@@ -189,7 +176,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-quit";
 			this.AddActionWidget (this.buttonOk, 0);
-			global::Gtk.ButtonBox.ButtonBoxChild w23 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w22[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w23 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w22 [this.buttonOk]));
 			w23.Expand = false;
 			w23.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs
index 0eb5887..2ff3f8e 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs
@@ -5,21 +5,14 @@ namespace LongoMatch.Gui.Dialog
 	public partial class RenderingJobsDialog
 	{
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
 		private global::LongoMatch.Gui.Component.RenderingJobsTreeView renderingjobstreeview2;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Button clearbutton;
-
 		private global::Gtk.Button cancelbutton;
-
 		private global::Gtk.Button retrybutton;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -49,7 +42,7 @@ namespace LongoMatch.Gui.Dialog
 			this.renderingjobstreeview2.Name = "renderingjobstreeview2";
 			this.GtkScrolledWindow.Add (this.renderingjobstreeview2);
 			this.hbox1.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.GtkScrolledWindow]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.GtkScrolledWindow]));
 			w3.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.vbox2 = new global::Gtk.VBox ();
@@ -61,7 +54,7 @@ namespace LongoMatch.Gui.Dialog
 			this.clearbutton.Name = "clearbutton";
 			this.clearbutton.UseUnderline = true;
 			// Container child clearbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w4 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w4 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w5 = new global::Gtk.HBox ();
 			w5.Spacing = 2;
@@ -77,7 +70,7 @@ namespace LongoMatch.Gui.Dialog
 			w4.Add (w5);
 			this.clearbutton.Add (w4);
 			this.vbox2.Add (this.clearbutton);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.clearbutton]));
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.clearbutton]));
 			w12.Position = 0;
 			w12.Expand = false;
 			w12.Fill = false;
@@ -87,7 +80,7 @@ namespace LongoMatch.Gui.Dialog
 			this.cancelbutton.Name = "cancelbutton";
 			this.cancelbutton.UseUnderline = true;
 			// Container child cancelbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w13 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w13 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w14 = new global::Gtk.HBox ();
 			w14.Spacing = 2;
@@ -103,7 +96,7 @@ namespace LongoMatch.Gui.Dialog
 			w13.Add (w14);
 			this.cancelbutton.Add (w13);
 			this.vbox2.Add (this.cancelbutton);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.cancelbutton]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.cancelbutton]));
 			w21.Position = 1;
 			w21.Expand = false;
 			w21.Fill = false;
@@ -113,7 +106,7 @@ namespace LongoMatch.Gui.Dialog
 			this.retrybutton.Name = "retrybutton";
 			this.retrybutton.UseUnderline = true;
 			// Container child retrybutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w22 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w22 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w23 = new global::Gtk.HBox ();
 			w23.Spacing = 2;
@@ -129,17 +122,17 @@ namespace LongoMatch.Gui.Dialog
 			w22.Add (w23);
 			this.retrybutton.Add (w22);
 			this.vbox2.Add (this.retrybutton);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.retrybutton]));
+			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.retrybutton]));
 			w30.Position = 2;
 			w30.Expand = false;
 			w30.Fill = false;
 			this.hbox1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox2]));
+			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox2]));
 			w31.Position = 1;
 			w31.Expand = false;
 			w31.Fill = false;
 			w1.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(w1[this.hbox1]));
+			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
 			w32.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.RenderingJobsDialog.ActionArea
 			global::Gtk.HButtonBox w33 = this.ActionArea;
@@ -156,7 +149,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w34 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w33[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w34 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w33 [this.buttonOk]));
 			w34.Expand = false;
 			w34.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs
similarity index 92%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs
index 6be2e54..04fa12b 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs
@@ -5,21 +5,14 @@ namespace LongoMatch.Gui.Dialog
 	public partial class SnapshotsDialog
 	{
 		private global::Gtk.Table table1;
-
 		private global::Gtk.Entry entry1;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.Label label3;
-
 		private global::Gtk.Label label5;
-
 		private global::Gtk.Label playLabel;
-
 		private global::Gtk.SpinButton spinbutton1;
-
 		private global::Gtk.Button button22;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -46,7 +39,7 @@ namespace LongoMatch.Gui.Dialog
 			this.entry1.IsEditable = true;
 			this.entry1.InvisibleChar = 'â';
 			this.table1.Add (this.entry1);
-			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.entry1]));
+			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry1]));
 			w2.TopAttach = ((uint)(1));
 			w2.BottomAttach = ((uint)(2));
 			w2.LeftAttach = ((uint)(1));
@@ -57,7 +50,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Play:");
 			this.table1.Add (this.label1);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.label1]));
 			w3.XOptions = ((global::Gtk.AttachOptions)(4));
 			w3.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
@@ -65,7 +58,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label3.Name = "label3";
 			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Interval (frames/s):");
 			this.table1.Add (this.label3);
-			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1[this.label3]));
+			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.label3]));
 			w4.TopAttach = ((uint)(2));
 			w4.BottomAttach = ((uint)(3));
 			// Container child table1.Gtk.Table+TableChild
@@ -73,14 +66,14 @@ namespace LongoMatch.Gui.Dialog
 			this.label5.Name = "label5";
 			this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Series Name:");
 			this.table1.Add (this.label5);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.label5]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5]));
 			w5.TopAttach = ((uint)(1));
 			w5.BottomAttach = ((uint)(2));
 			// Container child table1.Gtk.Table+TableChild
 			this.playLabel = new global::Gtk.Label ();
 			this.playLabel.Name = "playLabel";
 			this.table1.Add (this.playLabel);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.playLabel]));
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.playLabel]));
 			w6.LeftAttach = ((uint)(1));
 			w6.RightAttach = ((uint)(2));
 			w6.YOptions = ((global::Gtk.AttachOptions)(4));
@@ -93,7 +86,7 @@ namespace LongoMatch.Gui.Dialog
 			this.spinbutton1.Numeric = true;
 			this.spinbutton1.Value = 1;
 			this.table1.Add (this.spinbutton1);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1[this.spinbutton1]));
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.spinbutton1]));
 			w7.TopAttach = ((uint)(2));
 			w7.BottomAttach = ((uint)(3));
 			w7.LeftAttach = ((uint)(1));
@@ -101,7 +94,7 @@ namespace LongoMatch.Gui.Dialog
 			w7.XOptions = ((global::Gtk.AttachOptions)(1));
 			w7.YOptions = ((global::Gtk.AttachOptions)(4));
 			w1.Add (this.table1);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(w1[this.table1]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(w1 [this.table1]));
 			w8.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.SnapshotsDialog.ActionArea
 			global::Gtk.HButtonBox w9 = this.ActionArea;
@@ -115,7 +108,7 @@ namespace LongoMatch.Gui.Dialog
 			this.button22.Name = "button22";
 			this.button22.UseUnderline = true;
 			// Container child button22.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w10 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w10 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w11 = new global::Gtk.HBox ();
 			w11.Spacing = 2;
@@ -131,7 +124,7 @@ namespace LongoMatch.Gui.Dialog
 			w10.Add (w11);
 			this.button22.Add (w10);
 			this.AddActionWidget (this.button22, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w18 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w9[this.button22]));
+			global::Gtk.ButtonBox.ButtonBoxChild w18 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w9 [this.button22]));
 			w18.Expand = false;
 			w18.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs
index d1628ce..9769723 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs
@@ -5,37 +5,22 @@ namespace LongoMatch.Gui.Dialog
 	public partial class SubCategoryTagsEditor
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Table table1;
-
 		private global::Gtk.CheckButton fastcheckbutton;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.CheckButton multicheckbutton;
-
 		private global::Gtk.Entry nameentry;
-
 		private global::Gtk.Frame frame1;
-
 		private global::Gtk.Alignment GtkAlignment2;
-
 		private global::Gtk.VBox vbox3;
-
 		private global::Gtk.ScrolledWindow scrolledwindow1;
-
 		private global::Gtk.VBox tagsbox;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Entry tagentry;
-
 		private global::Gtk.Button addtagbutton;
-
 		private global::Gtk.Label GtkLabel4;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -71,7 +56,7 @@ namespace LongoMatch.Gui.Dialog
 			this.fastcheckbutton.DrawIndicator = true;
 			this.fastcheckbutton.UseUnderline = true;
 			this.table1.Add (this.fastcheckbutton);
-			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.fastcheckbutton]));
+			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.fastcheckbutton]));
 			w2.TopAttach = ((uint)(1));
 			w2.BottomAttach = ((uint)(2));
 			w2.LeftAttach = ((uint)(1));
@@ -83,7 +68,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label1.Name = "label1";
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Subcategory name:");
 			this.table1.Add (this.label1);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.label1]));
 			w3.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
 			this.multicheckbutton = new global::Gtk.CheckButton ();
@@ -95,7 +80,7 @@ namespace LongoMatch.Gui.Dialog
 			this.multicheckbutton.DrawIndicator = true;
 			this.multicheckbutton.UseUnderline = true;
 			this.table1.Add (this.multicheckbutton);
-			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1[this.multicheckbutton]));
+			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.multicheckbutton]));
 			w4.TopAttach = ((uint)(1));
 			w4.BottomAttach = ((uint)(2));
 			w4.XOptions = ((global::Gtk.AttachOptions)(4));
@@ -108,12 +93,12 @@ namespace LongoMatch.Gui.Dialog
 			this.nameentry.IsEditable = true;
 			this.nameentry.InvisibleChar = 'â';
 			this.table1.Add (this.nameentry);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.nameentry]));
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.nameentry]));
 			w5.LeftAttach = ((uint)(1));
 			w5.RightAttach = ((uint)(2));
 			w5.YOptions = ((global::Gtk.AttachOptions)(4));
 			this.vbox2.Add (this.table1);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.table1]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
 			w6.Position = 0;
 			w6.Expand = false;
 			w6.Fill = false;
@@ -122,7 +107,7 @@ namespace LongoMatch.Gui.Dialog
 			this.frame1.Name = "frame1";
 			this.frame1.ShadowType = ((global::Gtk.ShadowType)(1));
 			// Container child frame1.Gtk.Container+ContainerChild
-			this.GtkAlignment2 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
+			this.GtkAlignment2 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
 			this.GtkAlignment2.Name = "GtkAlignment2";
 			this.GtkAlignment2.LeftPadding = ((uint)(12));
 			// Container child GtkAlignment2.Gtk.Container+ContainerChild
@@ -143,7 +128,7 @@ namespace LongoMatch.Gui.Dialog
 			w7.Add (this.tagsbox);
 			this.scrolledwindow1.Add (w7);
 			this.vbox3.Add (this.scrolledwindow1);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.scrolledwindow1]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.scrolledwindow1]));
 			w10.Position = 0;
 			// Container child vbox3.Gtk.Box+BoxChild
 			this.hbox1 = new global::Gtk.HBox ();
@@ -157,7 +142,7 @@ namespace LongoMatch.Gui.Dialog
 			this.tagentry.IsEditable = true;
 			this.tagentry.InvisibleChar = 'â';
 			this.hbox1.Add (this.tagentry);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.tagentry]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.tagentry]));
 			w11.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.addtagbutton = new global::Gtk.Button ();
@@ -165,7 +150,7 @@ namespace LongoMatch.Gui.Dialog
 			this.addtagbutton.Name = "addtagbutton";
 			this.addtagbutton.UseUnderline = true;
 			// Container child addtagbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w13 = new global::Gtk.HBox ();
 			w13.Spacing = 2;
@@ -181,12 +166,12 @@ namespace LongoMatch.Gui.Dialog
 			w12.Add (w13);
 			this.addtagbutton.Add (w12);
 			this.hbox1.Add (this.addtagbutton);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.addtagbutton]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.addtagbutton]));
 			w20.Position = 1;
 			w20.Expand = false;
 			w20.Fill = false;
 			this.vbox3.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox1]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox1]));
 			w21.Position = 1;
 			w21.Expand = false;
 			w21.Fill = false;
@@ -198,10 +183,10 @@ namespace LongoMatch.Gui.Dialog
 			this.GtkLabel4.UseMarkup = true;
 			this.frame1.LabelWidget = this.GtkLabel4;
 			this.vbox2.Add (this.frame1);
-			global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.frame1]));
+			global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame1]));
 			w24.Position = 1;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w25.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.SubCategoryTagsEditor.ActionArea
 			global::Gtk.HButtonBox w26 = this.ActionArea;
@@ -218,7 +203,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w27 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w26[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w27 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w26 [this.buttonOk]));
 			w27.Expand = false;
 			w27.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs
similarity index 95%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs
index dbb923c..15a4274 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs
@@ -5,21 +5,14 @@ namespace LongoMatch.Gui.Dialog
 	public partial class TaggerDialog
 	{
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Notebook tagsnotebook;
-
 		private global::LongoMatch.Gui.Component.TaggerWidget taggerwidget1;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.Notebook playersnotebook;
-
 		private global::Gtk.VBox playersbox;
-
 		private global::Gtk.Label label2;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -53,7 +46,7 @@ namespace LongoMatch.Gui.Dialog
 			this.tagsnotebook.SetTabLabel (this.taggerwidget1, this.label1);
 			this.label1.ShowAll ();
 			this.hbox1.Add (this.tagsnotebook);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.tagsnotebook]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.tagsnotebook]));
 			w3.Position = 0;
 			// Container child hbox1.Gtk.Box+BoxChild
 			this.playersnotebook = new global::Gtk.Notebook ();
@@ -72,10 +65,10 @@ namespace LongoMatch.Gui.Dialog
 			this.playersnotebook.SetTabLabel (this.playersbox, this.label2);
 			this.label2.ShowAll ();
 			this.hbox1.Add (this.playersnotebook);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.playersnotebook]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.playersnotebook]));
 			w5.Position = 1;
 			w1.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1[this.hbox1]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
 			w6.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.TaggerDialog.ActionArea
 			global::Gtk.HButtonBox w7 = this.ActionArea;
@@ -92,7 +85,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonOk]));
 			w8.Expand = false;
 			w8.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs
index 30a0082..a8febde 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Dialog
 	public partial class TemplateEditorDialog
 	{
 		private global::Gtk.HBox templateeditorbox;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -29,7 +28,7 @@ namespace LongoMatch.Gui.Dialog
 			this.templateeditorbox.Name = "templateeditorbox";
 			this.templateeditorbox.Spacing = 6;
 			w1.Add (this.templateeditorbox);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.templateeditorbox]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.templateeditorbox]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.TemplateEditorDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -46,7 +45,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-apply";
 			this.AddActionWidget (this.buttonOk, -10);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w4.Expand = false;
 			w4.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs
index abd13e1..68255a5 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs
@@ -5,23 +5,15 @@ namespace LongoMatch.Gui.Dialog
 	public partial class TemplatesManager
 	{
 		private global::Gtk.HPaned hpaned1;
-
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.TreeView treeview;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.Button newbutton;
-
 		private global::Gtk.Button deletebutton;
-
 		private global::Gtk.Button savebutton;
-
 		private global::Gtk.HBox templateditorbox;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -52,7 +44,7 @@ namespace LongoMatch.Gui.Dialog
 			this.treeview.CanFocus = true;
 			this.treeview.Name = "treeview";
 			this.vbox2.Add (this.treeview);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.treeview]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.treeview]));
 			w2.Position = 0;
 			// Container child vbox2.Gtk.Box+BoxChild
 			this.hbox2 = new global::Gtk.HBox ();
@@ -65,7 +57,7 @@ namespace LongoMatch.Gui.Dialog
 			this.newbutton.Name = "newbutton";
 			this.newbutton.UseUnderline = true;
 			// Container child newbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w3 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w4 = new global::Gtk.HBox ();
 			w4.Spacing = 2;
@@ -79,7 +71,7 @@ namespace LongoMatch.Gui.Dialog
 			w3.Add (w4);
 			this.newbutton.Add (w3);
 			this.hbox2.Add (this.newbutton);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.newbutton]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.newbutton]));
 			w11.Position = 0;
 			w11.Expand = false;
 			w11.Fill = false;
@@ -91,7 +83,7 @@ namespace LongoMatch.Gui.Dialog
 			this.deletebutton.Name = "deletebutton";
 			this.deletebutton.UseUnderline = true;
 			// Container child deletebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w12 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w13 = new global::Gtk.HBox ();
 			w13.Spacing = 2;
@@ -105,7 +97,7 @@ namespace LongoMatch.Gui.Dialog
 			w12.Add (w13);
 			this.deletebutton.Add (w12);
 			this.hbox2.Add (this.deletebutton);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.deletebutton]));
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.deletebutton]));
 			w20.Position = 1;
 			w20.Expand = false;
 			w20.Fill = false;
@@ -117,7 +109,7 @@ namespace LongoMatch.Gui.Dialog
 			this.savebutton.Name = "savebutton";
 			this.savebutton.UseUnderline = true;
 			// Container child savebutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w21 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
 			global::Gtk.HBox w22 = new global::Gtk.HBox ();
 			w22.Spacing = 2;
@@ -131,17 +123,17 @@ namespace LongoMatch.Gui.Dialog
 			w21.Add (w22);
 			this.savebutton.Add (w21);
 			this.hbox2.Add (this.savebutton);
-			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.savebutton]));
+			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.savebutton]));
 			w29.Position = 2;
 			w29.Expand = false;
 			w29.Fill = false;
 			this.vbox2.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2]));
+			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 			w30.Position = 1;
 			w30.Expand = false;
 			w30.Fill = false;
 			this.hpaned1.Add (this.vbox2);
-			global::Gtk.Paned.PanedChild w31 = ((global::Gtk.Paned.PanedChild)(this.hpaned1[this.vbox2]));
+			global::Gtk.Paned.PanedChild w31 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.vbox2]));
 			w31.Resize = false;
 			// Container child hpaned1.Gtk.Paned+PanedChild
 			this.templateditorbox = new global::Gtk.HBox ();
@@ -149,7 +141,7 @@ namespace LongoMatch.Gui.Dialog
 			this.templateditorbox.Spacing = 6;
 			this.hpaned1.Add (this.templateditorbox);
 			w1.Add (this.hpaned1);
-			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(w1[this.hpaned1]));
+			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(w1 [this.hpaned1]));
 			w33.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.TemplatesManager.ActionArea
 			global::Gtk.HButtonBox w34 = this.ActionArea;
@@ -166,7 +158,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-quit";
 			this.AddActionWidget (this.buttonOk, 0);
-			global::Gtk.ButtonBox.ButtonBoxChild w35 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w34[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w35 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w34 [this.buttonOk]));
 			w35.Expand = false;
 			w35.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs
index 92d86f1..8e6f6b9 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs
@@ -5,17 +5,12 @@ namespace LongoMatch.Gui.Dialog
 	public partial class UpdateDialog
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.Label label3;
-
 		private global::Gtk.Label label5;
-
 		private global::Gtk.Label label6;
-
 		private global::Gtk.Label label7;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -37,7 +32,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("\nA new version of LongoMatch has been released at www.ylatuya.es!\n");
 			this.label3.Justify = ((global::Gtk.Justification)(2));
 			this.vbox2.Add (this.label3);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label3]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label3]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
@@ -47,7 +42,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("The new version is ");
 			this.label5.Justify = ((global::Gtk.Justification)(2));
 			this.vbox2.Add (this.label5);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label5]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label5]));
 			w3.Position = 1;
 			w3.Expand = false;
 			w3.Fill = false;
@@ -57,7 +52,7 @@ namespace LongoMatch.Gui.Dialog
 			this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("\nYou can download it using this direct link:");
 			this.label6.Justify = ((global::Gtk.Justification)(2));
 			this.vbox2.Add (this.label6);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label6]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label6]));
 			w4.Position = 2;
 			w4.Expand = false;
 			w4.Fill = false;
@@ -69,12 +64,12 @@ namespace LongoMatch.Gui.Dialog
 			this.label7.Justify = ((global::Gtk.Justification)(2));
 			this.label7.Selectable = true;
 			this.vbox2.Add (this.label7);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label7]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label7]));
 			w5.Position = 3;
 			w5.Expand = false;
 			w5.Fill = false;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w6.Position = 0;
 			w6.Expand = false;
 			w6.Fill = false;
@@ -93,7 +88,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonOk]));
 			w8.Expand = false;
 			w8.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
similarity index 93%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
index c798206..31c4d58 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
@@ -5,45 +5,26 @@ namespace LongoMatch.Gui.Dialog
 	public partial class VideoEditionProperties
 	{
 		private global::Gtk.VBox vbox2;
-
 		private global::Gtk.HBox hbox2;
-
 		private global::Gtk.Label label1;
-
 		private global::Gtk.ComboBox qualitycombobox;
-
 		private global::Gtk.HBox hbox4;
-
 		private global::Gtk.Label label2;
-
 		private global::Gtk.ComboBox sizecombobox;
-
 		private global::Gtk.HBox hbox5;
-
 		private global::Gtk.Label label3;
-
 		private global::Gtk.ComboBox formatcombobox;
-
 		private global::Gtk.HBox hbox6;
-
 		private global::Gtk.CheckButton descriptioncheckbutton;
-
 		private global::Gtk.CheckButton audiocheckbutton;
-
 		private global::Gtk.HBox hbox1;
-
 		private global::Gtk.Label filenamelabel;
-
 		private global::Gtk.HBox hbox3;
-
 		private global::Gtk.Entry fileentry;
-
 		private global::Gtk.Button openbutton;
-
 		private global::Gtk.Button buttonCancel;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -72,10 +53,10 @@ namespace LongoMatch.Gui.Dialog
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.label1 = new global::Gtk.Label ();
 			this.label1.Name = "label1";
-			this.label1.Xalign = 0f;
+			this.label1.Xalign = 0F;
 			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Quality:");
 			this.hbox2.Add (this.label1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.label1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.label1]));
 			w2.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.qualitycombobox = global::Gtk.ComboBox.NewText ();
@@ -86,10 +67,10 @@ namespace LongoMatch.Gui.Dialog
 			this.qualitycombobox.Name = "qualitycombobox";
 			this.qualitycombobox.Active = 1;
 			this.hbox2.Add (this.qualitycombobox);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.qualitycombobox]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.qualitycombobox]));
 			w3.Position = 1;
 			this.vbox2.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2]));
+			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
 			w4.Position = 0;
 			w4.Expand = false;
 			w4.Fill = false;
@@ -101,19 +82,19 @@ namespace LongoMatch.Gui.Dialog
 			// Container child hbox4.Gtk.Box+BoxChild
 			this.label2 = new global::Gtk.Label ();
 			this.label2.Name = "label2";
-			this.label2.Xalign = 0f;
+			this.label2.Xalign = 0F;
 			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Size: ");
 			this.hbox4.Add (this.label2);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.label2]));
+			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.label2]));
 			w5.Position = 0;
 			// Container child hbox4.Gtk.Box+BoxChild
 			this.sizecombobox = global::Gtk.ComboBox.NewText ();
 			this.sizecombobox.Name = "sizecombobox";
 			this.hbox4.Add (this.sizecombobox);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.sizecombobox]));
+			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.sizecombobox]));
 			w6.Position = 1;
 			this.vbox2.Add (this.hbox4);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox4]));
+			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox4]));
 			w7.Position = 1;
 			w7.Expand = false;
 			w7.Fill = false;
@@ -125,19 +106,19 @@ namespace LongoMatch.Gui.Dialog
 			// Container child hbox5.Gtk.Box+BoxChild
 			this.label3 = new global::Gtk.Label ();
 			this.label3.Name = "label3";
-			this.label3.Xalign = 0f;
+			this.label3.Xalign = 0F;
 			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Ouput Format:");
 			this.hbox5.Add (this.label3);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.label3]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.label3]));
 			w8.Position = 0;
 			// Container child hbox5.Gtk.Box+BoxChild
 			this.formatcombobox = global::Gtk.ComboBox.NewText ();
 			this.formatcombobox.Name = "formatcombobox";
 			this.hbox5.Add (this.formatcombobox);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.formatcombobox]));
+			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.formatcombobox]));
 			w9.Position = 1;
 			this.vbox2.Add (this.hbox5);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox5]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox5]));
 			w10.Position = 2;
 			w10.Expand = false;
 			w10.Fill = false;
@@ -154,7 +135,7 @@ namespace LongoMatch.Gui.Dialog
 			this.descriptioncheckbutton.DrawIndicator = true;
 			this.descriptioncheckbutton.UseUnderline = true;
 			this.hbox6.Add (this.descriptioncheckbutton);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.descriptioncheckbutton]));
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox6 [this.descriptioncheckbutton]));
 			w11.Position = 0;
 			// Container child hbox6.Gtk.Box+BoxChild
 			this.audiocheckbutton = new global::Gtk.CheckButton ();
@@ -164,10 +145,10 @@ namespace LongoMatch.Gui.Dialog
 			this.audiocheckbutton.DrawIndicator = true;
 			this.audiocheckbutton.UseUnderline = true;
 			this.hbox6.Add (this.audiocheckbutton);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.audiocheckbutton]));
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox6 [this.audiocheckbutton]));
 			w12.Position = 1;
 			this.vbox2.Add (this.hbox6);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox6]));
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox6]));
 			w13.Position = 3;
 			w13.Expand = false;
 			w13.Fill = false;
@@ -180,7 +161,7 @@ namespace LongoMatch.Gui.Dialog
 			this.filenamelabel.Name = "filenamelabel";
 			this.filenamelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("File name: ");
 			this.hbox1.Add (this.filenamelabel);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.filenamelabel]));
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.filenamelabel]));
 			w14.Position = 0;
 			w14.Expand = false;
 			w14.Fill = false;
@@ -195,7 +176,7 @@ namespace LongoMatch.Gui.Dialog
 			this.fileentry.IsEditable = false;
 			this.fileentry.InvisibleChar = 'â';
 			this.hbox3.Add (this.fileentry);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.fileentry]));
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.fileentry]));
 			w15.Position = 0;
 			// Container child hbox3.Gtk.Box+BoxChild
 			this.openbutton = new global::Gtk.Button ();
@@ -205,20 +186,20 @@ namespace LongoMatch.Gui.Dialog
 			this.openbutton.UseUnderline = true;
 			this.openbutton.Label = "gtk-save-as";
 			this.hbox3.Add (this.openbutton);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.openbutton]));
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.openbutton]));
 			w16.Position = 1;
 			w16.Expand = false;
 			w16.Fill = false;
 			this.hbox1.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.hbox3]));
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.hbox3]));
 			w17.Position = 1;
 			this.vbox2.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1]));
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
 			w18.Position = 4;
 			w18.Expand = false;
 			w18.Fill = false;
 			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
 			w19.Position = 0;
 			w19.Expand = false;
 			w19.Fill = false;
@@ -237,7 +218,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonCancel.UseUnderline = true;
 			this.buttonCancel.Label = "gtk-cancel";
 			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w21 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w20[this.buttonCancel]));
+			global::Gtk.ButtonBox.ButtonBoxChild w21 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w20 [this.buttonCancel]));
 			w21.Expand = false;
 			w21.Fill = false;
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
@@ -249,7 +230,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w22 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w20[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w22 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w20 [this.buttonOk]));
 			w22.Position = 1;
 			w22.Expand = false;
 			w22.Fill = false;
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs
similarity index 94%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs
index c1f2602..80c7c73 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs
@@ -5,9 +5,8 @@ namespace LongoMatch.Gui.Dialog
 	public partial class Win32CalendarDialog
 	{
 		private global::Gtk.Calendar calendar1;
-
 		private global::Gtk.Button buttonOk;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -29,7 +28,7 @@ namespace LongoMatch.Gui.Dialog
 			this.calendar1.Name = "calendar1";
 			this.calendar1.DisplayOptions = ((global::Gtk.CalendarDisplayOptions)(35));
 			w1.Add (this.calendar1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1[this.calendar1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1 [this.calendar1]));
 			w2.Position = 0;
 			// Internal child LongoMatch.Gui.Dialog.Win32CalendarDialog.ActionArea
 			global::Gtk.HButtonBox w3 = this.ActionArea;
@@ -46,7 +45,7 @@ namespace LongoMatch.Gui.Dialog
 			this.buttonOk.UseUnderline = true;
 			this.buttonOk.Label = "gtk-ok";
 			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3[this.buttonOk]));
+			global::Gtk.ButtonBox.ButtonBoxChild w4 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w3 [this.buttonOk]));
 			w4.Expand = false;
 			w4.Fill = false;
 			if ((this.Child != null)) {
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
similarity index 70%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
index 374a93a..976c774 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -5,107 +5,57 @@ namespace LongoMatch.Gui
 	public partial class MainWindow
 	{
 		private global::Gtk.UIManager UIManager;
-
 		private global::Gtk.Action FileAction;
-
 		private global::Gtk.Action NewPojectAction;
-
-		private global::Gtk.Action OpenProjectAction;
-
+		private global::Gtk.Action openAction;
 		private global::Gtk.Action QuitAction;
-
 		private global::Gtk.Action CloseProjectAction;
-
 		private global::Gtk.Action ToolsAction;
-
 		private global::Gtk.Action ProjectsManagerAction;
-
 		private global::Gtk.Action CategoriesTemplatesManagerAction;
-
 		private global::Gtk.Action ViewAction;
-
 		private global::Gtk.ToggleAction FullScreenAction;
-
 		private global::Gtk.ToggleAction PlaylistAction;
-
 		private global::Gtk.RadioAction TaggingViewAction;
-
 		private global::Gtk.RadioAction TimelineViewAction;
-
 		private global::Gtk.Action SaveProjectAction;
-
 		private global::Gtk.Action HelpAction;
-
 		private global::Gtk.Action AboutAction;
-
 		private global::Gtk.Action ExportProjectToCSVFileAction;
-
 		private global::Gtk.Action TeamsTemplatesManagerAction;
-
 		private global::Gtk.ToggleAction HideAllWidgetsAction;
-
 		private global::Gtk.Action HelpAction1;
-
 		private global::Gtk.ToggleAction DrawingToolAction;
-
 		private global::Gtk.Action ImportProjectAction;
-
 		private global::Gtk.RadioAction ManualTaggingViewAction;
-
 		private global::Gtk.VBox vbox1;
-
 		private global::Gtk.VBox menubox;
-
 		private global::Gtk.MenuBar menubar1;
-
 		private global::Gtk.HPaned hpaned;
-
 		private global::Gtk.VBox leftbox;
-
 		private global::Gtk.Notebook notebook1;
-
-		private global::LongoMatch.Gui.Component.PlaysListTreeWidget treewidget1;
-
+		private global::LongoMatch.Gui.Component.PlaysListTreeWidget playsList;
 		private global::Gtk.Label playslabel;
-
-		private global::LongoMatch.Gui.Component.PlayersListTreeWidget localplayerslisttreewidget;
-
+		private global::LongoMatch.Gui.Component.PlayersListTreeWidget localPlayersList;
 		private global::Gtk.Label localteamlabel;
-
-		private global::LongoMatch.Gui.Component.PlayersListTreeWidget visitorplayerslisttreewidget;
-
+		private global::LongoMatch.Gui.Component.PlayersListTreeWidget visitorPlayersList;
 		private global::Gtk.Label visitorteamlabel;
-
-		private global::LongoMatch.Gui.Component.TagsTreeWidget tagstreewidget1;
-
+		private global::LongoMatch.Gui.Component.TagsTreeWidget tagsList;
 		private global::Gtk.Label tagslabel;
-
 		private global::Gtk.HPaned hpaned1;
-
 		private global::Gtk.VBox vbox5;
-
 		private global::Gtk.HBox videowidgetsbox;
-
 		private global::LongoMatch.Gui.Component.DrawingToolBox drawingtoolbox1;
-
-		private global::LongoMatch.Gui.PlayerBin playerbin1;
-
-		private global::LongoMatch.Gui.CapturerBin capturerBin;
-
-		private global::LongoMatch.Gui.Component.TimeLineWidget timelinewidget1;
-
-		private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget1;
-
+		private global::LongoMatch.Gui.PlayerBin player;
+		private global::LongoMatch.Gui.CapturerBin capturer;
+		private global::LongoMatch.Gui.Component.TimeLineWidget timeline;
+		private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
 		private global::Gtk.VBox rightvbox;
-
-		private global::LongoMatch.Gui.Component.NotesWidget noteswidget1;
-
-		private global::LongoMatch.Gui.Component.PlayListWidget playlistwidget2;
-
+		private global::LongoMatch.Gui.Component.NotesWidget notes;
+		private global::LongoMatch.Gui.Component.PlayListWidget playlist;
 		private global::Gtk.Statusbar statusbar1;
-
 		private global::LongoMatch.Gui.Component.RenderingStateBar renderingstatebar1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -118,9 +68,9 @@ namespace LongoMatch.Gui
 			this.NewPojectAction = new global::Gtk.Action ("NewPojectAction", global::Mono.Unix.Catalog.GetString ("_New Project"), null, "gtk-new");
 			this.NewPojectAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_New Project");
 			w1.Add (this.NewPojectAction, null);
-			this.OpenProjectAction = new global::Gtk.Action ("OpenProjectAction", global::Mono.Unix.Catalog.GetString ("_Open Project"), null, "gtk-open");
-			this.OpenProjectAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Open Project");
-			w1.Add (this.OpenProjectAction, null);
+			this.openAction = new global::Gtk.Action ("openAction", global::Mono.Unix.Catalog.GetString ("_Open Project"), null, "gtk-open");
+			this.openAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Open Project");
+			w1.Add (this.openAction, null);
 			this.QuitAction = new global::Gtk.Action ("QuitAction", global::Mono.Unix.Catalog.GetString ("_Quit"), null, "gtk-quit");
 			this.QuitAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Quit");
 			w1.Add (this.QuitAction, null);
@@ -208,16 +158,16 @@ namespace LongoMatch.Gui
 			this.menubox.Name = "menubox";
 			this.menubox.Spacing = 6;
 			// Container child menubox.Gtk.Box+BoxChild
-			this.UIManager.AddUiFromString ("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='OpenProjectAction' action='OpenProjectAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem name='CloseProjectAction' action='CloseProjectAction'/><separator/><menuitem name='ImportProjectAction' action='ImportProjectAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' action='TeamsTemplatesManagerAction'/><menuitem name='ExportProjectToCSVFileAction' action='ExportProjectToCSVFileAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='FullScreenAction' action='FullScreenAc
 tion'/><menuitem name='HideAllWidgetsAction' action='HideAllWidgetsAction'/><separator/><menuitem name='PlaylistAction' action='PlaylistAction'/><separator/><menuitem name='TaggingViewAction' action='TaggingViewAction'/><menuitem name='ManualTaggingViewAction' action='ManualTaggingViewAction'/><menuitem name='TimelineViewAction' action='TimelineViewAction'/></menu><menu name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem name='HelpAction1' action='HelpAction1'/></menu></menubar></ui>");
+			this.UIManager.AddUiFromString ("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='openAction' action='openAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem name='CloseProjectAction' action='CloseProjectAction'/><separator/><menuitem name='ImportProjectAction' action='ImportProjectAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' action='TeamsTemplatesManagerAction'/><menuitem name='ExportProjectToCSVFileAction' action='ExportProjectToCSVFileAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='FullScreenAction' action='FullScreenAction'/><menuit
 em name='HideAllWidgetsAction' action='HideAllWidgetsAction'/><separator/><menuitem name='PlaylistAction' action='PlaylistAction'/><separator/><menuitem name='TaggingViewAction' action='TaggingViewAction'/><menuitem name='ManualTaggingViewAction' action='ManualTaggingViewAction'/><menuitem name='TimelineViewAction' action='TimelineViewAction'/></menu><menu name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem name='HelpAction1' action='HelpAction1'/></menu></menubar></ui>");
 			this.menubar1 = ((global::Gtk.MenuBar)(this.UIManager.GetWidget ("/menubar1")));
 			this.menubar1.Name = "menubar1";
 			this.menubox.Add (this.menubar1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.menubox[this.menubar1]));
+			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.menubox [this.menubar1]));
 			w2.Position = 0;
 			w2.Expand = false;
 			w2.Fill = false;
 			this.vbox1.Add (this.menubox);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.menubox]));
+			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.menubox]));
 			w3.Position = 0;
 			w3.Expand = false;
 			w3.Fill = false;
@@ -237,61 +187,61 @@ namespace LongoMatch.Gui
 			this.notebook1.CurrentPage = 3;
 			this.notebook1.TabPos = ((global::Gtk.PositionType)(3));
 			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.treewidget1 = new global::LongoMatch.Gui.Component.PlaysListTreeWidget ();
-			this.treewidget1.Events = ((global::Gdk.EventMask)(256));
-			this.treewidget1.Name = "treewidget1";
-			this.notebook1.Add (this.treewidget1);
+			this.playsList = new global::LongoMatch.Gui.Component.PlaysListTreeWidget ();
+			this.playsList.Events = ((global::Gdk.EventMask)(256));
+			this.playsList.Name = "playsList";
+			this.notebook1.Add (this.playsList);
 			// Notebook tab
 			this.playslabel = new global::Gtk.Label ();
 			this.playslabel.Name = "playslabel";
 			this.playslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Plays");
-			this.notebook1.SetTabLabel (this.treewidget1, this.playslabel);
+			this.notebook1.SetTabLabel (this.playsList, this.playslabel);
 			this.playslabel.ShowAll ();
 			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.localplayerslisttreewidget = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
-			this.localplayerslisttreewidget.Events = ((global::Gdk.EventMask)(256));
-			this.localplayerslisttreewidget.Name = "localplayerslisttreewidget";
-			this.notebook1.Add (this.localplayerslisttreewidget);
-			global::Gtk.Notebook.NotebookChild w5 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.localplayerslisttreewidget]));
+			this.localPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
+			this.localPlayersList.Events = ((global::Gdk.EventMask)(256));
+			this.localPlayersList.Name = "localPlayersList";
+			this.notebook1.Add (this.localPlayersList);
+			global::Gtk.Notebook.NotebookChild w5 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.localPlayersList]));
 			w5.Position = 1;
 			// Notebook tab
 			this.localteamlabel = new global::Gtk.Label ();
 			this.localteamlabel.Name = "localteamlabel";
 			this.localteamlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Local Team");
-			this.notebook1.SetTabLabel (this.localplayerslisttreewidget, this.localteamlabel);
+			this.notebook1.SetTabLabel (this.localPlayersList, this.localteamlabel);
 			this.localteamlabel.ShowAll ();
 			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.visitorplayerslisttreewidget = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
-			this.visitorplayerslisttreewidget.Events = ((global::Gdk.EventMask)(256));
-			this.visitorplayerslisttreewidget.Name = "visitorplayerslisttreewidget";
-			this.notebook1.Add (this.visitorplayerslisttreewidget);
-			global::Gtk.Notebook.NotebookChild w6 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.visitorplayerslisttreewidget]));
+			this.visitorPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
+			this.visitorPlayersList.Events = ((global::Gdk.EventMask)(256));
+			this.visitorPlayersList.Name = "visitorPlayersList";
+			this.notebook1.Add (this.visitorPlayersList);
+			global::Gtk.Notebook.NotebookChild w6 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.visitorPlayersList]));
 			w6.Position = 2;
 			// Notebook tab
 			this.visitorteamlabel = new global::Gtk.Label ();
 			this.visitorteamlabel.Name = "visitorteamlabel";
 			this.visitorteamlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Visitor Team");
-			this.notebook1.SetTabLabel (this.visitorplayerslisttreewidget, this.visitorteamlabel);
+			this.notebook1.SetTabLabel (this.visitorPlayersList, this.visitorteamlabel);
 			this.visitorteamlabel.ShowAll ();
 			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.tagstreewidget1 = new global::LongoMatch.Gui.Component.TagsTreeWidget ();
-			this.tagstreewidget1.Sensitive = false;
-			this.tagstreewidget1.Events = ((global::Gdk.EventMask)(256));
-			this.tagstreewidget1.Name = "tagstreewidget1";
-			this.notebook1.Add (this.tagstreewidget1);
-			global::Gtk.Notebook.NotebookChild w7 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.tagstreewidget1]));
+			this.tagsList = new global::LongoMatch.Gui.Component.TagsTreeWidget ();
+			this.tagsList.Sensitive = false;
+			this.tagsList.Events = ((global::Gdk.EventMask)(256));
+			this.tagsList.Name = "tagsList";
+			this.notebook1.Add (this.tagsList);
+			global::Gtk.Notebook.NotebookChild w7 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.tagsList]));
 			w7.Position = 3;
 			// Notebook tab
 			this.tagslabel = new global::Gtk.Label ();
 			this.tagslabel.Name = "tagslabel";
 			this.tagslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Tags");
-			this.notebook1.SetTabLabel (this.tagstreewidget1, this.tagslabel);
+			this.notebook1.SetTabLabel (this.tagsList, this.tagslabel);
 			this.tagslabel.ShowAll ();
 			this.leftbox.Add (this.notebook1);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.leftbox[this.notebook1]));
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.leftbox [this.notebook1]));
 			w8.Position = 0;
 			this.hpaned.Add (this.leftbox);
-			global::Gtk.Paned.PanedChild w9 = ((global::Gtk.Paned.PanedChild)(this.hpaned[this.leftbox]));
+			global::Gtk.Paned.PanedChild w9 = ((global::Gtk.Paned.PanedChild)(this.hpaned [this.leftbox]));
 			w9.Resize = false;
 			// Container child hpaned.Gtk.Paned+PanedChild
 			this.hpaned1 = new global::Gtk.HPaned ();
@@ -311,49 +261,49 @@ namespace LongoMatch.Gui
 			this.drawingtoolbox1.Events = ((global::Gdk.EventMask)(256));
 			this.drawingtoolbox1.Name = "drawingtoolbox1";
 			this.videowidgetsbox.Add (this.drawingtoolbox1);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox[this.drawingtoolbox1]));
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.drawingtoolbox1]));
 			w10.Position = 0;
 			w10.Expand = false;
 			w10.Fill = false;
 			// Container child videowidgetsbox.Gtk.Box+BoxChild
-			this.playerbin1 = new global::LongoMatch.Gui.PlayerBin ();
-			this.playerbin1.Events = ((global::Gdk.EventMask)(256));
-			this.playerbin1.Name = "playerbin1";
-			this.playerbin1.Rate = 1f;
-			this.playerbin1.ExpandLogo = true;
-			this.videowidgetsbox.Add (this.playerbin1);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox[this.playerbin1]));
+			this.player = new global::LongoMatch.Gui.PlayerBin ();
+			this.player.Events = ((global::Gdk.EventMask)(256));
+			this.player.Name = "player";
+			this.player.Rate = 1F;
+			this.player.ExpandLogo = true;
+			this.videowidgetsbox.Add (this.player);
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.player]));
 			w11.Position = 1;
 			// Container child videowidgetsbox.Gtk.Box+BoxChild
-			this.capturerBin = new global::LongoMatch.Gui.CapturerBin ();
-			this.capturerBin.Events = ((global::Gdk.EventMask)(256));
-			this.capturerBin.Name = "capturerBin";
-			this.videowidgetsbox.Add (this.capturerBin);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox[this.capturerBin]));
+			this.capturer = new global::LongoMatch.Gui.CapturerBin ();
+			this.capturer.Events = ((global::Gdk.EventMask)(256));
+			this.capturer.Name = "capturer";
+			this.videowidgetsbox.Add (this.capturer);
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.capturer]));
 			w12.Position = 2;
 			this.vbox5.Add (this.videowidgetsbox);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.videowidgetsbox]));
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.videowidgetsbox]));
 			w13.Position = 0;
 			// Container child vbox5.Gtk.Box+BoxChild
-			this.timelinewidget1 = new global::LongoMatch.Gui.Component.TimeLineWidget ();
-			this.timelinewidget1.HeightRequest = 200;
-			this.timelinewidget1.Events = ((global::Gdk.EventMask)(256));
-			this.timelinewidget1.Name = "timelinewidget1";
-			this.timelinewidget1.CurrentFrame = ((uint)(0));
-			this.vbox5.Add (this.timelinewidget1);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.timelinewidget1]));
+			this.timeline = new global::LongoMatch.Gui.Component.TimeLineWidget ();
+			this.timeline.HeightRequest = 200;
+			this.timeline.Events = ((global::Gdk.EventMask)(256));
+			this.timeline.Name = "timeline";
+			this.timeline.CurrentFrame = ((uint)(0));
+			this.vbox5.Add (this.timeline);
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.timeline]));
 			w14.Position = 1;
 			w14.Expand = false;
 			// Container child vbox5.Gtk.Box+BoxChild
-			this.buttonswidget1 = new global::LongoMatch.Gui.Component.ButtonsWidget ();
-			this.buttonswidget1.Events = ((global::Gdk.EventMask)(256));
-			this.buttonswidget1.Name = "buttonswidget1";
-			this.vbox5.Add (this.buttonswidget1);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.buttonswidget1]));
+			this.buttonswidget = new global::LongoMatch.Gui.Component.ButtonsWidget ();
+			this.buttonswidget.Events = ((global::Gdk.EventMask)(256));
+			this.buttonswidget.Name = "buttonswidget";
+			this.vbox5.Add (this.buttonswidget);
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.buttonswidget]));
 			w15.Position = 2;
 			w15.Expand = false;
 			this.hpaned1.Add (this.vbox5);
-			global::Gtk.Paned.PanedChild w16 = ((global::Gtk.Paned.PanedChild)(this.hpaned1[this.vbox5]));
+			global::Gtk.Paned.PanedChild w16 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.vbox5]));
 			w16.Resize = false;
 			w16.Shrink = false;
 			// Container child hpaned1.Gtk.Paned+PanedChild
@@ -362,30 +312,30 @@ namespace LongoMatch.Gui
 			this.rightvbox.Name = "rightvbox";
 			this.rightvbox.Spacing = 6;
 			// Container child rightvbox.Gtk.Box+BoxChild
-			this.noteswidget1 = new global::LongoMatch.Gui.Component.NotesWidget ();
-			this.noteswidget1.Events = ((global::Gdk.EventMask)(256));
-			this.noteswidget1.Name = "noteswidget1";
-			this.rightvbox.Add (this.noteswidget1);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.rightvbox[this.noteswidget1]));
+			this.notes = new global::LongoMatch.Gui.Component.NotesWidget ();
+			this.notes.Events = ((global::Gdk.EventMask)(256));
+			this.notes.Name = "notes";
+			this.rightvbox.Add (this.notes);
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.notes]));
 			w17.Position = 0;
 			// Container child rightvbox.Gtk.Box+BoxChild
-			this.playlistwidget2 = new global::LongoMatch.Gui.Component.PlayListWidget ();
-			this.playlistwidget2.WidthRequest = 100;
-			this.playlistwidget2.Events = ((global::Gdk.EventMask)(256));
-			this.playlistwidget2.Name = "playlistwidget2";
-			this.rightvbox.Add (this.playlistwidget2);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.rightvbox[this.playlistwidget2]));
+			this.playlist = new global::LongoMatch.Gui.Component.PlayListWidget ();
+			this.playlist.WidthRequest = 100;
+			this.playlist.Events = ((global::Gdk.EventMask)(256));
+			this.playlist.Name = "playlist";
+			this.rightvbox.Add (this.playlist);
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.playlist]));
 			w18.Position = 1;
 			this.hpaned1.Add (this.rightvbox);
-			global::Gtk.Paned.PanedChild w19 = ((global::Gtk.Paned.PanedChild)(this.hpaned1[this.rightvbox]));
+			global::Gtk.Paned.PanedChild w19 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.rightvbox]));
 			w19.Resize = false;
 			w19.Shrink = false;
 			this.hpaned.Add (this.hpaned1);
-			global::Gtk.Paned.PanedChild w20 = ((global::Gtk.Paned.PanedChild)(this.hpaned[this.hpaned1]));
+			global::Gtk.Paned.PanedChild w20 = ((global::Gtk.Paned.PanedChild)(this.hpaned [this.hpaned1]));
 			w20.Resize = false;
 			w20.Shrink = false;
 			this.vbox1.Add (this.hpaned);
-			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hpaned]));
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hpaned]));
 			w21.Position = 1;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.statusbar1 = new global::Gtk.Statusbar ();
@@ -397,12 +347,12 @@ namespace LongoMatch.Gui
 			this.renderingstatebar1.Name = "renderingstatebar1";
 			this.renderingstatebar1.Fraction = 0;
 			this.statusbar1.Add (this.renderingstatebar1);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.statusbar1[this.renderingstatebar1]));
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.statusbar1 [this.renderingstatebar1]));
 			w22.Position = 2;
 			w22.Expand = false;
 			w22.Fill = false;
 			this.vbox1.Add (this.statusbar1);
-			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.statusbar1]));
+			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.statusbar1]));
 			w23.Position = 2;
 			w23.Expand = false;
 			w23.Fill = false;
@@ -411,38 +361,30 @@ namespace LongoMatch.Gui
 				this.Child.ShowAll ();
 			}
 			this.DefaultWidth = 1259;
-			this.DefaultHeight = 853;
+			this.DefaultHeight = 860;
 			this.leftbox.Hide ();
 			this.drawingtoolbox1.Hide ();
-			this.timelinewidget1.Hide ();
-			this.buttonswidget1.Hide ();
-			this.noteswidget1.Hide ();
-			this.playlistwidget2.Hide ();
+			this.timeline.Hide ();
+			this.buttonswidget.Hide ();
+			this.notes.Hide ();
+			this.playlist.Hide ();
 			this.rightvbox.Hide ();
 			this.renderingstatebar1.Hide ();
 			this.Show ();
 			this.NewPojectAction.Activated += new global::System.EventHandler (this.OnNewActivated);
-			this.OpenProjectAction.Activated += new global::System.EventHandler (this.OnOpenActivated);
-			this.QuitAction.Activated += new global::System.EventHandler (this.OnQuitActivated);
-			this.CloseProjectAction.Activated += new global::System.EventHandler (this.OnCloseActivated);
-			this.ProjectsManagerAction.Activated += new global::System.EventHandler (this.OnDatabaseManagerActivated);
-			this.CategoriesTemplatesManagerAction.Activated += new global::System.EventHandler (this.OnSectionsTemplatesManagerActivated);
+			this.openAction.Activated += new global::System.EventHandler (this.OnOpenActivated);
 			this.FullScreenAction.Toggled += new global::System.EventHandler (this.OnFullScreenActionToggled);
 			this.PlaylistAction.Toggled += new global::System.EventHandler (this.OnPlaylistActionToggled);
 			this.TaggingViewAction.Toggled += new global::System.EventHandler (this.OnViewToggled);
-			this.SaveProjectAction.Activated += new global::System.EventHandler (this.OnSaveProjectActionActivated);
 			this.AboutAction.Activated += new global::System.EventHandler (this.OnAboutActionActivated);
-			this.ExportProjectToCSVFileAction.Activated += new global::System.EventHandler (this.OnExportProjectToCSVFileActionActivated);
-			this.TeamsTemplatesManagerAction.Activated += new global::System.EventHandler (this.OnTeamsTemplatesManagerActionActivated);
 			this.HideAllWidgetsAction.Toggled += new global::System.EventHandler (this.OnHideAllWidgetsActionToggled);
 			this.HelpAction1.Activated += new global::System.EventHandler (this.OnHelpAction1Activated);
 			this.DrawingToolAction.Toggled += new global::System.EventHandler (this.OnDrawingToolActionToggled);
-			this.ImportProjectAction.Activated += new global::System.EventHandler (this.OnImportProjectActionActivated);
 			this.ManualTaggingViewAction.Toggled += new global::System.EventHandler (this.OnViewToggled);
-			this.treewidget1.TimeNodeSelected += new global::LongoMatch.Handlers.TimeNodeSelectedHandler (this.OnTimeNodeSelected);
-			this.playerbin1.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnPlayerbin1Error);
-			this.playerbin1.SegmentClosedEvent += new global::LongoMatch.Video.Common.SegmentClosedHandler (this.OnSegmentClosedEvent);
-			this.capturerBin.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnCapturerBinError);
+			this.playsList.TimeNodeSelected += new global::LongoMatch.Handlers.PlaySelectedHandler (this.OnTimeNodeSelected);
+			this.player.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnPlayerbin1Error);
+			this.player.SegmentClosedEvent += new global::LongoMatch.Video.Common.SegmentClosedHandler (this.OnSegmentClosedEvent);
+			this.capturer.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnCapturerBinError);
 		}
 	}
 }
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs
similarity index 97%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs
index 533ab0e..ea02770 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs
@@ -5,7 +5,7 @@ namespace LongoMatch.Gui.Popup
 	public partial class CalendarPopup
 	{
 		private global::Gtk.Calendar calendar1;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
@@ -30,7 +30,7 @@ namespace LongoMatch.Gui.Popup
 				this.Child.ShowAll ();
 			}
 			this.DefaultWidth = 281;
-			this.DefaultHeight = 154;
+			this.DefaultHeight = 214;
 			this.Show ();
 			this.FocusOutEvent += new global::Gtk.FocusOutEventHandler (this.OnFocusOutEvent);
 			this.calendar1.DaySelectedDoubleClick += new global::System.EventHandler (this.OnCalendar1DaySelectedDoubleClick);
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs
similarity index 99%
rename from LongoMatch/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs
rename to LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs
index e080b87..7412912 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs
@@ -5,7 +5,7 @@ namespace LongoMatch.Gui.Popup
 	public partial class TransparentDrawingArea
 	{
 		private global::Gtk.DrawingArea drawingarea;
-
+        
 		protected virtual void Build ()
 		{
 			global::Stetic.Gui.Initialize (this);
diff --git a/LongoMatch/gtk-gui/generated.cs b/LongoMatch.GUI/gtk-gui/generated.cs
similarity index 89%
rename from LongoMatch/gtk-gui/generated.cs
rename to LongoMatch.GUI/gtk-gui/generated.cs
index a6e11f4..a6e0af4 100644
--- a/LongoMatch/gtk-gui/generated.cs
+++ b/LongoMatch.GUI/gtk-gui/generated.cs
@@ -5,25 +5,20 @@ namespace Stetic
 	internal class Gui
 	{
 		private static bool initialized;
-
-		static internal void Initialize (Gtk.Widget iconRenderer)
+        
+		internal static void Initialize (Gtk.Widget iconRenderer)
 		{
 			if ((Stetic.Gui.initialized == false)) {
 				Stetic.Gui.initialized = true;
-				global::Gtk.IconFactory w1 = new global::Gtk.IconFactory ();
-				global::Gtk.IconSet w2 = new global::Gtk.IconSet (global::Gdk.Pixbuf.LoadFromResource ("longomatch.png"));
-				w1.Add ("longomatch", w2);
-				w1.AddDefault ();
 			}
 		}
 	}
-
+    
 	internal class BinContainer
 	{
 		private Gtk.Widget child;
-
 		private Gtk.UIManager uimanager;
-
+        
 		public static BinContainer Attach (Gtk.Bin bin)
 		{
 			BinContainer bc = new BinContainer ();
@@ -32,32 +27,32 @@ namespace Stetic
 			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
 			return bc;
 		}
-
+        
 		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
 		{
 			if ((this.child != null)) {
 				args.Requisition = this.child.SizeRequest ();
 			}
 		}
-
+        
 		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
 		{
 			if ((this.child != null)) {
 				this.child.Allocation = args.Allocation;
 			}
 		}
-
+        
 		private void OnAdded (object sender, Gtk.AddedArgs args)
 		{
 			this.child = args.Widget;
 		}
-
+        
 		public void SetUiManager (Gtk.UIManager uim)
 		{
 			this.uimanager = uim;
 			this.child.Realized += new System.EventHandler (this.OnRealized);
 		}
-
+        
 		private void OnRealized (object sender, System.EventArgs args)
 		{
 			if ((this.uimanager != null)) {
@@ -70,7 +65,7 @@ namespace Stetic
 			}
 		}
 	}
-
+    
 	internal class IconLoader
 	{
 		public static Gdk.Pixbuf LoadIcon (Gtk.Widget widget, string name, Gtk.IconSize size)
@@ -81,7 +76,7 @@ namespace Stetic
 			} else {
 				int sz;
 				int sy;
-				global::Gtk.Icon.SizeLookup (size, out sz, out sy);
+				global::Gtk.Icon.SizeLookup (size, out  sz, out  sy);
 				try {
 					return Gtk.IconTheme.Default.LoadIcon (name, sz, 0);
 				} catch (System.Exception) {
@@ -104,14 +99,14 @@ namespace Stetic
 			}
 		}
 	}
-
+    
 	internal class ActionGroups
 	{
 		public static Gtk.ActionGroup GetActionGroup (System.Type type)
 		{
 			return Stetic.ActionGroups.GetActionGroup (type.FullName);
 		}
-
+        
 		public static Gtk.ActionGroup GetActionGroup (string name)
 		{
 			return null;
diff --git a/LongoMatch/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
similarity index 99%
rename from LongoMatch/gtk-gui/gui.stetic
rename to LongoMatch.GUI/gtk-gui/gui.stetic
index 6fa8b38..2745485 100644
--- a/LongoMatch/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -5,16 +5,11 @@
     <target-gtk-version>2.12</target-gtk-version>
   </configuration>
   <import>
-    <widget-library name="../../bin/CesarPlayer.dll" />
-    <widget-library name="../../bin/LongoMatch.exe" internal="true" />
+    <widget-library name="../../bin/LongoMatch.GUI.Multimedia.dll" />
+    <widget-library name="../../bin/LongoMatch.Multimedia.dll" />
+    <widget-library name="../../bin/LongoMatch.Core.dll" />
+    <widget-library name="../../bin/LongoMatch.Gui.dll" internal="true" />
   </import>
-  <icon-factory>
-    <icon-set id="longomatch">
-      <source>
-        <property name="Image">resource:longomatch.png</property>
-      </source>
-    </icon-set>
-  </icon-factory>
   <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ProjectDetailsWidget" design-size="378 268">
     <property name="MemberName" />
     <child>
@@ -905,7 +900,7 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Window" id="LongoMatch.Gui.Popup.CalendarPopup" design-size="281 154">
+  <widget class="Gtk.Window" id="LongoMatch.Gui.Popup.CalendarPopup" design-size="281 214">
     <property name="MemberName" />
     <property name="Title" translatable="yes" />
     <property name="WindowPosition">Mouse</property>
@@ -1564,7 +1559,7 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="1259 853">
+  <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="1259 860">
     <action-group name="Default">
       <action id="FileAction">
         <property name="Type">Action</property>
@@ -1578,7 +1573,7 @@
         <property name="StockId">gtk-new</property>
         <signal name="Activated" handler="OnNewActivated" />
       </action>
-      <action id="OpenProjectAction">
+      <action id="openAction">
         <property name="Type">Action</property>
         <property name="Label" translatable="yes">_Open Project</property>
         <property name="ShortLabel" translatable="yes">_Open Project</property>
@@ -1590,7 +1585,6 @@
         <property name="Label" translatable="yes">_Quit</property>
         <property name="ShortLabel" translatable="yes">_Quit</property>
         <property name="StockId">gtk-quit</property>
-        <signal name="Activated" handler="OnQuitActivated" />
       </action>
       <action id="CloseProjectAction">
         <property name="Type">Action</property>
@@ -1598,7 +1592,6 @@
         <property name="Sensitive">False</property>
         <property name="ShortLabel" translatable="yes">_Close Project</property>
         <property name="StockId">gtk-close</property>
-        <signal name="Activated" handler="OnCloseActivated" />
       </action>
       <action id="ToolsAction">
         <property name="Type">Action</property>
@@ -1609,13 +1602,11 @@
         <property name="Type">Action</property>
         <property name="Label" translatable="yes">Projects Manager</property>
         <property name="ShortLabel" translatable="yes">Database Manager</property>
-        <signal name="Activated" handler="OnDatabaseManagerActivated" />
       </action>
       <action id="CategoriesTemplatesManagerAction">
         <property name="Type">Action</property>
         <property name="Label" translatable="yes">Categories Templates Manager</property>
         <property name="ShortLabel" translatable="yes">Templates Manager</property>
-        <signal name="Activated" handler="OnSectionsTemplatesManagerActivated" />
       </action>
       <action id="ViewAction">
         <property name="Type">Action</property>
@@ -1671,7 +1662,6 @@
         <property name="Sensitive">False</property>
         <property name="ShortLabel" translatable="yes">_Save Project</property>
         <property name="StockId">gtk-save</property>
-        <signal name="Activated" handler="OnSaveProjectActionActivated" />
       </action>
       <action id="HelpAction">
         <property name="Type">Action</property>
@@ -1691,13 +1681,11 @@
         <property name="Sensitive">False</property>
         <property name="ShortLabel" translatable="yes">Export Project To CSV File</property>
         <property name="Visible">False</property>
-        <signal name="Activated" handler="OnExportProjectToCSVFileActionActivated" />
       </action>
       <action id="TeamsTemplatesManagerAction">
         <property name="Type">Action</property>
         <property name="Label" translatable="yes">Teams Templates Manager</property>
         <property name="ShortLabel" translatable="yes">Teams Templates Manager</property>
-        <signal name="Activated" handler="OnTeamsTemplatesManagerActionActivated" />
       </action>
       <action id="HideAllWidgetsAction">
         <property name="Type">Toggle</property>
@@ -1730,7 +1718,6 @@
         <property name="Label" translatable="yes">_Import Project</property>
         <property name="ShortLabel" translatable="yes">_Import Project</property>
         <property name="StockId">stock-import</property>
-        <signal name="Activated" handler="OnImportProjectActionActivated" />
       </action>
       <action id="ManualTaggingViewAction">
         <property name="Type">Radio</property>
@@ -1764,7 +1751,7 @@
                 <node name="menubar1" type="Menubar">
                   <node type="Menu" action="FileAction">
                     <node type="Menuitem" action="NewPojectAction" />
-                    <node type="Menuitem" action="OpenProjectAction" />
+                    <node type="Menuitem" action="openAction" />
                     <node type="Menuitem" action="SaveProjectAction" />
                     <node type="Menuitem" action="CloseProjectAction" />
                     <node type="Separator" />
@@ -1826,7 +1813,7 @@
                     <property name="CurrentPage">3</property>
                     <property name="TabPos">Bottom</property>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.PlaysListTreeWidget" id="treewidget1">
+                      <widget class="LongoMatch.Gui.Component.PlaysListTreeWidget" id="playsList">
                         <property name="MemberName" />
                         <property name="Events">ButtonPressMask</property>
                         <signal name="TimeNodeSelected" handler="OnTimeNodeSelected" />
@@ -1842,7 +1829,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="localplayerslisttreewidget">
+                      <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="localPlayersList">
                         <property name="MemberName" />
                         <property name="Events">ButtonPressMask</property>
                       </widget>
@@ -1860,7 +1847,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="visitorplayerslisttreewidget">
+                      <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="visitorPlayersList">
                         <property name="MemberName" />
                         <property name="Events">ButtonPressMask</property>
                       </widget>
@@ -1878,7 +1865,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.TagsTreeWidget" id="tagstreewidget1">
+                      <widget class="LongoMatch.Gui.Component.TagsTreeWidget" id="tagsList">
                         <property name="MemberName" />
                         <property name="Sensitive">False</property>
                         <property name="Events">ButtonPressMask</property>
@@ -1934,7 +1921,7 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="LongoMatch.Gui.PlayerBin" id="playerbin1">
+                          <widget class="LongoMatch.Gui.PlayerBin" id="player">
                             <property name="MemberName" />
                             <property name="Events">ButtonPressMask</property>
                             <property name="Rate">1</property>
@@ -1948,7 +1935,7 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="LongoMatch.Gui.CapturerBin" id="capturerBin">
+                          <widget class="LongoMatch.Gui.CapturerBin" id="capturer">
                             <property name="MemberName" />
                             <property name="Events">ButtonPressMask</property>
                             <signal name="Error" handler="OnCapturerBinError" />
@@ -1965,7 +1952,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.TimeLineWidget" id="timelinewidget1">
+                      <widget class="LongoMatch.Gui.Component.TimeLineWidget" id="timeline">
                         <property name="MemberName" />
                         <property name="HeightRequest">200</property>
                         <property name="Visible">False</property>
@@ -1979,7 +1966,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget1">
+                      <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget">
                         <property name="MemberName" />
                         <property name="Visible">False</property>
                         <property name="Events">ButtonPressMask</property>
@@ -2003,7 +1990,7 @@
                     <property name="Visible">False</property>
                     <property name="Spacing">6</property>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.NotesWidget" id="noteswidget1">
+                      <widget class="LongoMatch.Gui.Component.NotesWidget" id="notes">
                         <property name="MemberName" />
                         <property name="Visible">False</property>
                         <property name="Events">ButtonPressMask</property>
@@ -2014,7 +2001,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="LongoMatch.Gui.Component.PlayListWidget" id="playlistwidget2">
+                      <widget class="LongoMatch.Gui.Component.PlayListWidget" id="playlist">
                         <property name="MemberName" />
                         <property name="WidthRequest">100</property>
                         <property name="Visible">False</property>
@@ -2075,7 +2062,7 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CategoryProperties" design-size="438 392">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CategoryProperties" design-size="516 392">
     <property name="MemberName" />
     <child>
       <widget class="Gtk.VBox" id="vbox2">
@@ -2672,7 +2659,6 @@ new one.</property>
                         <property name="MemberName" />
                         <property name="Sensitive">False</property>
                         <property name="CanFocus">True</property>
-                        <signal name="DragEnd" handler="OnPlaylisttreeview1DragEnd" />
                       </widget>
                       <packing>
                         <property name="Position">1</property>
@@ -3661,7 +3647,7 @@ Extra</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.FramesCaptureProgressDialog" design-size="400 148">
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.FramesCaptureProgressDialog" design-size="400 149">
     <property name="MemberName" />
     <property name="Title" translatable="yes">Capture Progress</property>
     <property name="Icon">stock:longomatch Dialog</property>
@@ -3863,7 +3849,7 @@ You can download it using this direct link:</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.HotKeySelectorDialog" design-size="385 94">
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.HotKeySelectorDialog" design-size="385 109">
     <property name="MemberName" />
     <property name="Title" translatable="yes">Select a HotKey</property>
     <property name="Icon">stock:longomatch Dialog</property>
@@ -3916,7 +3902,7 @@ Hotkeys with a single key are also allowed with Ctrl+key.</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PlayerProperties" design-size="270 286">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PlayerProperties" design-size="278 318">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
@@ -4714,7 +4700,7 @@ No</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.DrawingToolBox" design-size="86 382">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.DrawingToolBox" design-size="94 398">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
@@ -5073,7 +5059,7 @@ Show-&gt;&lt;b&gt; S&lt;/b&gt;
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.EditCategoryDialog" design-size="492 191">
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.EditCategoryDialog" design-size="522 280">
     <property name="MemberName" />
     <property name="Title" translatable="yes">Category Details</property>
     <property name="Icon">resource:longomatch.png</property>
@@ -5606,7 +5592,7 @@ Show-&gt;&lt;b&gt; S&lt;/b&gt;
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.ProjectSelectionDialog" design-size="298 179">
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.ProjectSelectionDialog" design-size="332 183">
     <property name="MemberName" />
     <property name="Title" translatable="yes">New Project</property>
     <property name="Icon">stock:longomatch Menu</property>
@@ -5797,7 +5783,7 @@ Show-&gt;&lt;b&gt; S&lt;/b&gt;
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.EndCaptureDialog" design-size="517 175">
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.EndCaptureDialog" design-size="566 178">
     <property name="MemberName" />
     <property name="Title" translatable="yes" />
     <property name="Icon">stock:longomatch Menu</property>
@@ -6250,7 +6236,7 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PlayersTaggerWidget" design-size="300 40">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PlayersTaggerWidget" design-size="300 48">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
diff --git a/LongoMatch/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
similarity index 93%
rename from LongoMatch/gtk-gui/objects.xml
rename to LongoMatch.GUI/gtk-gui/objects.xml
index b3149e1..39d35ab 100644
--- a/LongoMatch/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -1,20 +1,4 @@
 <objects attr-sync="on">
-  <object type="LongoMatch.Gui.Component.NotesWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="NotesWidget Signals">
-        <signal name="TimeNodeChanged" />
-      </itemgroup>
-    </signals>
-  </object>
-  <object type="LongoMatch.Gui.Component.NotesWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="NotesWidget Signals">
-        <signal name="TimeNodeChanged" />
-      </itemgroup>
-    </signals>
-  </object>
   <object type="LongoMatch.Gui.Component.PlayerPropertiesTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
     <itemgroups />
     <signals>
@@ -68,31 +52,69 @@
     </itemgroups>
     <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.PlayerProperties" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.PlayersListTreeWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="PlayersListTreeWidget Signals">
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeChanged" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.DrawingWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.ProjectDetailsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups>
-      <itemgroup label="ProjectDetailsWidget Properties">
-        <property name="Edited" />
-        <property name="Season" />
-        <property name="Competition" />
-        <property name="LocalGoals" />
-        <property name="VisitorGoals" />
-        <property name="Date" />
+  <object type="LongoMatch.Gui.Component.TaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.SubCategoriesTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups />
+    <signals>
+      <itemgroup label="SubCategoriesTreeView Signals">
+        <signal name="SubCategoriesDeleted" />
+        <signal name="SubCategorySelected" />
       </itemgroup>
-    </itemgroups>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.RenderingJobsTreeView" palette-category="General" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups />
     <signals>
-      <itemgroup label="ProjectDetailsWidget Signals">
-        <signal name="EditedEvent" />
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.ButtonsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ButtonsWidget Signals">
+        <signal name="NewMarkEvent" />
+        <signal name="NewMarkStartEvent" />
+        <signal name="NewMarkStopEvent" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlayersListTreeWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.PlayerProperties" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.ProjectListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
-      <itemgroup label="PlayersListTreeWidget Signals">
+      <itemgroup label="ProjectListWidget Signals">
+        <signal name="ProjectsSelected" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlayersTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.TagsTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="TagsTreeWidget Signals">
         <signal name="TimeNodeSelected" />
         <signal name="TimeNodeChanged" />
         <signal name="PlayListNodeAdded" />
@@ -100,7 +122,11 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.DrawingWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.TeamTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Popup.TransparentDrawingArea" palette-category="General" allow-children="false" base-type="Gtk.Window">
     <itemgroups />
     <signals />
   </object>
@@ -122,14 +148,15 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlayersTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+  <object type="LongoMatch.Gui.Component.PlaysTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
     <itemgroups>
       <itemgroup label="ListTreeViewBase Properties">
         <property name="Colors" />
       </itemgroup>
     </itemgroups>
     <signals>
-      <itemgroup label="ListTreeViewBase Signals">
+      <itemgroup label="PlaysTreeView Signals">
+        <signal name="EditProperties" />
         <signal name="TimeNodeChanged" />
         <signal name="TimeNodeSelected" />
         <signal name="TimeNodeDeleted" />
@@ -140,7 +167,7 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlaysTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+  <object type="LongoMatch.Gui.Component.PlayersTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
     <itemgroups>
       <itemgroup label="ListTreeViewBase Properties">
         <property name="Colors" />
@@ -154,71 +181,55 @@
         <signal name="PlayListNodeAdded" />
         <signal name="SnapshotSeriesEvent" />
         <signal name="TagPlay" />
-        <signal name="EditProperties" />
         <signal name="NewRenderingJob" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlayListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="PlayListWidget Signals">
-        <signal name="PlayListNodeSelected" />
-        <signal name="ApplyCurrentRate" />
-        <signal name="NewRenderingJob" />
+  <object type="LongoMatch.Gui.Component.TemplatesEditorBase" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+      <itemgroup label="TemplatesEditorBase Properties">
+        <property name="CanExport" />
+        <property name="Edited" />
       </itemgroup>
-    </signals>
-  </object>
-  <object type="LongoMatch.Gui.Component.TaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals />
-  </object>
-  <object type="LongoMatch.Gui.Popup.TransparentDrawingArea" palette-category="General" allow-children="false" base-type="Gtk.Window">
-    <itemgroups />
+    </itemgroups>
     <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.ProjectListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.NotesWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
-      <itemgroup label="ProjectListWidget Signals">
-        <signal name="ProjectsSelected" />
+      <itemgroup label="NotesWidget Signals">
+        <signal name="TimeNodeChanged" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlaysListTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.PlayListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
-      <itemgroup label="PlaysListTreeWidget Signals">
-        <signal name="TimeNodeSelected" />
-        <signal name="TimeNodeChanged" />
-        <signal name="TimeNodeDeleted" />
-        <signal name="PlayListNodeAdded" />
-        <signal name="SnapshotSeriesEvent" />
-        <signal name="TagPlay" />
+      <itemgroup label="PlayListWidget Signals">
+        <signal name="PlayListNodeSelected" />
+        <signal name="ApplyCurrentRate" />
         <signal name="NewRenderingJob" />
+        <signal name="OpenPlaylistEvent" />
+        <signal name="NewPlaylistEvent" />
+        <signal name="SavePlaylistEvent" />
+        <signal name="RenderPlaylistEvent" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.ButtonsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.StringTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
-    <signals>
-      <itemgroup label="ButtonsWidget Signals">
-        <signal name="NewMarkEvent" />
-        <signal name="NewMarkStartEvent" />
-        <signal name="NewMarkStopEvent" />
-      </itemgroup>
-    </signals>
+    <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.DrawingToolBox" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
+  <object type="LongoMatch.Gui.Component.RenderingStateBar" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+      <itemgroup label="RenderingStateBar Properties">
+        <property name="Fraction" />
+      </itemgroup>
+    </itemgroups>
     <signals>
-      <itemgroup label="DrawingToolBox Signals">
-        <signal name="LineWidthChanged" />
-        <signal name="DrawToolChanged" />
-        <signal name="ColorChanged" />
-        <signal name="VisibilityChanged" />
-        <signal name="ClearDrawing" />
-        <signal name="TransparencyChanged" />
+      <itemgroup label="RenderingStateBar Signals">
+        <signal name="Cancel" />
+        <signal name="ManageJobs" />
       </itemgroup>
     </signals>
   </object>
@@ -237,6 +248,21 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.Component.TeamTemplateEditorWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+    </itemgroups>
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.CategoriesTemplateEditorWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+    </itemgroups>
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.TemplatesEditorWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+    </itemgroups>
+    <signals />
+  </object>
   <object type="LongoMatch.Gui.Component.CategoryProperties" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
@@ -245,63 +271,48 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.SubCategoriesTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+  <object type="LongoMatch.Gui.Component.DrawingToolBox" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
-      <itemgroup label="SubCategoriesTreeView Signals">
-        <signal name="SubCategoriesDeleted" />
-        <signal name="SubCategorySelected" />
+      <itemgroup label="DrawingToolBox Signals">
+        <signal name="LineWidthChanged" />
+        <signal name="DrawToolChanged" />
+        <signal name="ColorChanged" />
+        <signal name="VisibilityChanged" />
+        <signal name="ClearDrawing" />
+        <signal name="TransparencyChanged" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.TemplatesEditorBase" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.ProjectDetailsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups>
-      <itemgroup label="TemplatesEditorBase Properties">
-        <property name="CanExport" />
+      <itemgroup label="ProjectDetailsWidget Properties">
         <property name="Edited" />
+        <property name="Season" />
+        <property name="Competition" />
+        <property name="LocalGoals" />
+        <property name="VisitorGoals" />
+        <property name="Date" />
       </itemgroup>
     </itemgroups>
-    <signals />
-  </object>
-  <object type="LongoMatch.Gui.Component.PlayersTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals />
-  </object>
-  <object type="LongoMatch.Gui.Component.StringTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals />
-  </object>
-  <object type="LongoMatch.Gui.Component.TeamTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals />
+    <signals>
+      <itemgroup label="ProjectDetailsWidget Signals">
+        <signal name="EditedEvent" />
+      </itemgroup>
+    </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.TagsTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.PlaysListTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
-      <itemgroup label="TagsTreeWidget Signals">
+      <itemgroup label="PlaysListTreeWidget Signals">
         <signal name="TimeNodeSelected" />
         <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeDeleted" />
         <signal name="PlayListNodeAdded" />
         <signal name="SnapshotSeriesEvent" />
+        <signal name="TagPlay" />
+        <signal name="NewRenderingJob" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.RenderingStateBar" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups>
-      <itemgroup label="RenderingStateBar Properties">
-        <property name="Fraction" />
-      </itemgroup>
-    </itemgroups>
-    <signals>
-      <itemgroup label="RenderingStateBar Signals">
-        <signal name="Cancel" />
-        <signal name="ManageJobs" />
-      </itemgroup>
-    </signals>
-  </object>
-  <object type="LongoMatch.Gui.Component.RenderingJobsTreeView" palette-category="General" allow-children="false" base-type="Gtk.TreeView">
-    <itemgroups />
-    <signals>
-    </signals>
-  </object>
 </objects>
\ No newline at end of file
diff --git a/CesarPlayer/Capturer/FakeCapturer.cs b/LongoMatch.Multimedia/Capturer/FakeCapturer.cs
similarity index 97%
rename from CesarPlayer/Capturer/FakeCapturer.cs
rename to LongoMatch.Multimedia/Capturer/FakeCapturer.cs
index 2c142f4..8ad8563 100644
--- a/CesarPlayer/Capturer/FakeCapturer.cs
+++ b/LongoMatch.Multimedia/Capturer/FakeCapturer.cs
@@ -19,6 +19,8 @@
 using System;
 using Mono.Unix;
 using GLib;
+using LongoMatch.Common;
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video.Common;
 using Gdk;
 
diff --git a/CesarPlayer/Capturer/GstCameraCapturer.cs b/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
similarity index 92%
rename from CesarPlayer/Capturer/GstCameraCapturer.cs
rename to LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
index 2ad735d..2e29521 100644
--- a/CesarPlayer/Capturer/GstCameraCapturer.cs
+++ b/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
@@ -20,11 +20,17 @@ namespace LongoMatch.Video.Capturer {
 
 	using System;
 	using System.Collections;
+	using System.Collections.Generic;
 	using System.Runtime.InteropServices;
+	using Mono.Unix;
+	
+	using LongoMatch.Common;
+	using LongoMatch.Multimedia.Interfaces;
 	using LongoMatch.Video.Common;
+	
 
 	#region Autogenerated code
-	public  class GstCameraCapturer : Gtk.HBox, LongoMatch.Video.Capturer.ICapturer {
+	public  class GstCameraCapturer : Gtk.HBox, ICapturer {
 
 		public event EllpasedTimeHandler EllapsedTime;
 
@@ -484,6 +490,36 @@ namespace LongoMatch.Video.Capturer {
 			LongoMatch.GtkSharp.Capturer.ObjectManager.Initialize();
 		}
 		#endregion
-
+		
+		static public List<Device> ListVideoDevices() {
+			List<Device> devicesList  = new List<Device>();
+
+			/* Generate the list of devices and add the gconf one at the bottom
+			 * so that DV sources are always selected before, at least on Linux,
+			 * since on Windows both raw an dv sources are listed from the same
+			 * source element (dshowvideosrc) */
+			foreach(string devName in GstCameraCapturer.VideoDevices) {
+				string idProp;
+
+				if(Environment.OSVersion.Platform == PlatformID.Unix)
+					idProp = VideoConstants.DV1394SRC_PROP;
+				else
+					idProp = VideoConstants.DSHOWVIDEOSINK_PROP;
+
+				devicesList.Add(new Device {
+					ID = devName,
+					IDProperty = idProp,
+					DeviceType = DeviceType.DV
+				});
+			}
+			if(Environment.OSVersion.Platform == PlatformID.Unix) {
+				devicesList.Add(new Device {
+					ID = Catalog.GetString("Default device"),
+					IDProperty = "",
+					DeviceType = DeviceType.Video
+				});
+			}
+			return devicesList;
+		}
 	}
 }
diff --git a/CesarPlayer/Capturer/LiveSourceTimer.cs b/LongoMatch.Multimedia/Capturer/LiveSourceTimer.cs
similarity index 100%
rename from CesarPlayer/Capturer/LiveSourceTimer.cs
rename to LongoMatch.Multimedia/Capturer/LiveSourceTimer.cs
diff --git a/CesarPlayer/Capturer/ObjectManager.cs b/LongoMatch.Multimedia/Capturer/ObjectManager.cs
similarity index 100%
rename from CesarPlayer/Capturer/ObjectManager.cs
rename to LongoMatch.Multimedia/Capturer/ObjectManager.cs
diff --git a/CesarPlayer/Common/Constants.cs b/LongoMatch.Multimedia/Common/Constants.cs
similarity index 97%
rename from CesarPlayer/Common/Constants.cs
rename to LongoMatch.Multimedia/Common/Constants.cs
index 057bfce..e8a6c0d 100644
--- a/CesarPlayer/Common/Constants.cs
+++ b/LongoMatch.Multimedia/Common/Constants.cs
@@ -21,7 +21,7 @@ using System;
 namespace LongoMatch.Video.Common
 {
 
-	class Constants {
+	class VideoConstants {
 		public const string DV1394SRC_PROP = "guid";
 		public const string DSHOWVIDEOSINK_PROP = "device-name";
 	}
diff --git a/CesarPlayer/Common/Enum.cs b/LongoMatch.Multimedia/Common/Enum.cs
similarity index 85%
rename from CesarPlayer/Common/Enum.cs
rename to LongoMatch.Multimedia/Common/Enum.cs
index 0a60812..8e86481 100644
--- a/CesarPlayer/Common/Enum.cs
+++ b/LongoMatch.Multimedia/Common/Enum.cs
@@ -47,30 +47,6 @@ namespace LongoMatch.Video.Common
 		EmptyFile,
 	}
 
-	public enum VideoEncoderType {
-		Mpeg4,
-		Xvid,
-		Theora,
-		H264,
-		Mpeg2,
-		VP8,
-	}
-
-	public enum AudioEncoderType {
-		Mp3,
-		Aac,
-		Vorbis,
-	}
-
-	public enum VideoMuxerType {
-		Avi,
-		Mp4,
-		Matroska,
-		Ogg,
-		MpegPS,
-		WebM,
-	}
-
 	public enum CapturerType {
 		Fake,
 		Live,
@@ -145,16 +121,5 @@ namespace LongoMatch.Video.Common
 		AudioChannels,
 	}
 
-	public enum DeviceType {
-		Video,
-		Audio,
-		DV
-	}
-
-	public enum CaptureSourceType {
-		None,
-		DV,
-		Raw,
-		DShow
-	}
+	
 }
diff --git a/CesarPlayer/Common/Handlers.cs b/LongoMatch.Multimedia/Common/Handlers.cs
similarity index 99%
rename from CesarPlayer/Common/Handlers.cs
rename to LongoMatch.Multimedia/Common/Handlers.cs
index 59f9e41..64fb353 100644
--- a/CesarPlayer/Common/Handlers.cs
+++ b/LongoMatch.Multimedia/Common/Handlers.cs
@@ -30,7 +30,7 @@ namespace LongoMatch.Video.Common
 	public delegate void NextButtonClickedHandler();
 	public delegate void PrevButtonClickedHandler();
 	public delegate void ProgressHandler(float progress);
-	public delegate void FramesProgressHandler(int actual, int total,Pixbuf frame);
+	public delegate void FramesProgressHandler(int actual, int total, Pixbuf frame);
 	public delegate void DrawFrameHandler(int time);
 	public delegate void EllpasedTimeHandler(int ellapsedTime);
 
diff --git a/CesarPlayer/Editor/EditorState.cs b/LongoMatch.Multimedia/Editor/EditorState.cs
similarity index 100%
rename from CesarPlayer/Editor/EditorState.cs
rename to LongoMatch.Multimedia/Editor/EditorState.cs
diff --git a/CesarPlayer/Editor/GstVideoSplitter.cs b/LongoMatch.Multimedia/Editor/GstVideoSplitter.cs
similarity index 99%
rename from CesarPlayer/Editor/GstVideoSplitter.cs
rename to LongoMatch.Multimedia/Editor/GstVideoSplitter.cs
index 7fffd06..1be6ac1 100644
--- a/CesarPlayer/Editor/GstVideoSplitter.cs
+++ b/LongoMatch.Multimedia/Editor/GstVideoSplitter.cs
@@ -23,6 +23,8 @@ namespace LongoMatch.Video.Editor {
 	using System;
 	using System.Collections;
 	using System.Runtime.InteropServices;
+	using LongoMatch.Common;
+	using LongoMatch.Multimedia.Interfaces;
 	using LongoMatch.Video.Common;
 
 
diff --git a/CesarPlayer/Editor/VideoSegment.cs b/LongoMatch.Multimedia/Editor/VideoSegment.cs
similarity index 100%
rename from CesarPlayer/Editor/VideoSegment.cs
rename to LongoMatch.Multimedia/Editor/VideoSegment.cs
diff --git a/CesarPlayer/Capturer/ICapturer.cs b/LongoMatch.Multimedia/Interfaces/ICapturer.cs
similarity index 95%
rename from CesarPlayer/Capturer/ICapturer.cs
rename to LongoMatch.Multimedia/Interfaces/ICapturer.cs
index a5ef4dd..62b4a9f 100644
--- a/CesarPlayer/Capturer/ICapturer.cs
+++ b/LongoMatch.Multimedia/Interfaces/ICapturer.cs
@@ -19,10 +19,11 @@
 //
 
 using System;
+using LongoMatch.Common;
 using LongoMatch.Video.Common;
 using Gdk;
 
-namespace LongoMatch.Video.Capturer
+namespace LongoMatch.Multimedia.Interfaces
 {
 
 
diff --git a/CesarPlayer/Utils/IFramesCapturer.cs b/LongoMatch.Multimedia/Interfaces/IFramesCapturer.cs
similarity index 96%
rename from CesarPlayer/Utils/IFramesCapturer.cs
rename to LongoMatch.Multimedia/Interfaces/IFramesCapturer.cs
index be1b070..fe9c308 100644
--- a/CesarPlayer/Utils/IFramesCapturer.cs
+++ b/LongoMatch.Multimedia/Interfaces/IFramesCapturer.cs
@@ -21,7 +21,7 @@
 using System;
 using Gdk;
 
-namespace LongoMatch.Video.Utils
+namespace LongoMatch.Multimedia.Interfaces
 {
 
 
diff --git a/CesarPlayer/Player/IPlayer.cs b/LongoMatch.Multimedia/Interfaces/IPlayer.cs
similarity index 98%
rename from CesarPlayer/Player/IPlayer.cs
rename to LongoMatch.Multimedia/Interfaces/IPlayer.cs
index f98a401..43b2ab6 100644
--- a/CesarPlayer/Player/IPlayer.cs
+++ b/LongoMatch.Multimedia/Interfaces/IPlayer.cs
@@ -24,8 +24,7 @@ using Gdk;
 using LongoMatch.Video.Common;
 
 
-namespace LongoMatch.Video.Player
-
+namespace LongoMatch.Multimedia.Interfaces
 {
 	public interface IPlayer
 	{
diff --git a/CesarPlayer/Editor/IVideoEditor.cs b/LongoMatch.Multimedia/Interfaces/IVideoEditor.cs
similarity index 94%
rename from CesarPlayer/Editor/IVideoEditor.cs
rename to LongoMatch.Multimedia/Interfaces/IVideoEditor.cs
index e421150..dc0e5f3 100644
--- a/CesarPlayer/Editor/IVideoEditor.cs
+++ b/LongoMatch.Multimedia/Interfaces/IVideoEditor.cs
@@ -20,12 +20,12 @@
 
 using System;
 using System.Collections.Generic;
+using LongoMatch.Common;
 using LongoMatch.Video.Common;
 
-namespace LongoMatch.Video.Editor
+namespace LongoMatch.Multimedia.Interfaces
 {
 
-
 	public interface IVideoEditor
 	{
 		event ProgressHandler Progress;
diff --git a/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
new file mode 100644
index 0000000..e7708e0
--- /dev/null
+++ b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
@@ -0,0 +1,68 @@
+<Project name="LongoMatch.Multimedia" fileversion="2.0" DefaultNamespace="LongoMatch.Multimedia" language="C#" targetFramework="4.0" ctype="DotNetProject">
+  <Configurations active="Release">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Multimedia" />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="True" generateoverflowchecks="False" definesymbols="DEBUG" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Multimedia" />
+      <Build debugmode="False" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="True" generateoverflowchecks="False" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File subtype="Code" buildaction="Compile" name="Player/GstPlayer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Player/ObjectManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Editor/EditorState.cs" />
+    <File subtype="Code" buildaction="Compile" name="Editor/GstVideoSplitter.cs" />
+    <File subtype="Code" buildaction="Compile" name="Editor/VideoSegment.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Constants.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Enum.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Handlers.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Capturer" />
+    <File subtype="Code" buildaction="Compile" name="Capturer/ObjectManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Capturer/FakeCapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Capturer/GstCameraCapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Capturer/LiveSourceTimer.cs" />
+    <File subtype="Code" buildaction="Compile" name="MultimediaFactory.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Utils" />
+    <File subtype="Code" buildaction="Compile" name="Utils/TimeString.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/FramesCapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/IMetadataReader.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/PreviewMediaFile.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/MpegRemuxer.cs" />
+    <File subtype="Directory" buildaction="Compile" name="Utils" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Utils" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Common" />
+    <File subtype="Directory" buildaction="Compile" name="Utils" />
+    <File subtype="Directory" buildaction="Compile" name="Player" />
+    <File subtype="Directory" buildaction="Compile" name="Editor" />
+    <File subtype="Directory" buildaction="Compile" name="Capturer" />
+    <File subtype="Directory" buildaction="Compile" name="Utils" />
+    <File subtype="Directory" buildaction="Compile" name="Interfaces" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/ICapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IFramesCapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IPlayer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Interfaces/IVideoEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/VideoDevice.cs" />
+    <File subtype="Code" buildaction="Compile" name="Utils/GStreamer.cs" />
+  </Contents>
+  <References>
+    <ProjectReference type="Project" localcopy="True" refto="libcesarplayer" />
+    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  </References>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.Multimedia/Makefile.am b/LongoMatch.Multimedia/Makefile.am
new file mode 100644
index 0000000..80ff949
--- /dev/null
+++ b/LongoMatch.Multimedia/Makefile.am
@@ -0,0 +1,33 @@
+ASSEMBLY = LongoMatch.Multimedia
+TARGET = library
+
+LINK = $(REF_DEP_LONGOMATCH_MULTIMEDIA)
+
+SOURCES = \
+	Capturer/GstCameraCapturer.cs \
+	Capturer/FakeCapturer.cs \
+	Capturer/LiveSourceTimer.cs \
+	Capturer/ObjectManager.cs \
+	Common/Enum.cs \
+	Common/Constants.cs \
+	Common/Handlers.cs \
+	Editor/EditorState.cs \
+	Editor/VideoSegment.cs \
+	Editor/GstVideoSplitter.cs \
+	Interfaces/IFramesCapturer.cs \
+	Interfaces/ICapturer.cs \
+	Interfaces/IVideoEditor.cs \
+	Interfaces/IPlayer.cs \
+	MultimediaFactory.cs \
+	Player/GstPlayer.cs \
+	Player/ObjectManager.cs \
+	Utils/FramesCapturer.cs \
+	Utils/GStreamer.cs \
+	Utils/IMetadataReader.cs \
+	Utils/MpegRemuxer.cs \
+	Utils/PreviewMediaFile.cs \
+	Utils/TimeString.cs \
+	Utils/VideoDevice.cs
+
+
+include $(top_srcdir)/build/build.mk
diff --git a/CesarPlayer/MultimediaFactory.cs b/LongoMatch.Multimedia/MultimediaFactory.cs
similarity index 91%
rename from CesarPlayer/MultimediaFactory.cs
rename to LongoMatch.Multimedia/MultimediaFactory.cs
index 613c1b5..9b34c69 100644
--- a/CesarPlayer/MultimediaFactory.cs
+++ b/LongoMatch.Multimedia/MultimediaFactory.cs
@@ -19,6 +19,9 @@
 //
 
 using System;
+using System.Runtime.InteropServices;
+
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video.Capturer;
 using LongoMatch.Video.Player;
 using LongoMatch.Video.Editor;
@@ -104,5 +107,11 @@ namespace LongoMatch.Video
 				return new FakeCapturer();
 			}
 		}
+
+		[DllImport("libcesarplayer.dll")]
+		static extern void gst_init (int argc, string argv);
+		public static void InitBackend() {
+			gst_init(0, "");
+		}
 	}
 }
\ No newline at end of file
diff --git a/CesarPlayer/Player/GstPlayer.cs b/LongoMatch.Multimedia/Player/GstPlayer.cs
similarity index 99%
rename from CesarPlayer/Player/GstPlayer.cs
rename to LongoMatch.Multimedia/Player/GstPlayer.cs
index d4d2ead..2774461 100644
--- a/CesarPlayer/Player/GstPlayer.cs
+++ b/LongoMatch.Multimedia/Player/GstPlayer.cs
@@ -21,6 +21,7 @@ namespace LongoMatch.Video.Player {
 	using System;
 	using System.Collections;
 	using System.Runtime.InteropServices;
+	using LongoMatch.Multimedia.Interfaces;
 	using LongoMatch.Video.Common;
 	using LongoMatch.Video.Utils;
 
diff --git a/CesarPlayer/Player/ObjectManager.cs b/LongoMatch.Multimedia/Player/ObjectManager.cs
similarity index 100%
rename from CesarPlayer/Player/ObjectManager.cs
rename to LongoMatch.Multimedia/Player/ObjectManager.cs
diff --git a/CesarPlayer/Utils/FramesCapturer.cs b/LongoMatch.Multimedia/Utils/FramesCapturer.cs
similarity index 98%
rename from CesarPlayer/Utils/FramesCapturer.cs
rename to LongoMatch.Multimedia/Utils/FramesCapturer.cs
index e918993..47018b4 100644
--- a/CesarPlayer/Utils/FramesCapturer.cs
+++ b/LongoMatch.Multimedia/Utils/FramesCapturer.cs
@@ -24,6 +24,7 @@ using LongoMatch.Video;
 using Gdk;
 using Gtk;
 using System.Threading;
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video.Common;
 
 namespace LongoMatch.Video.Utils
diff --git a/LongoMatch/Common/GStreamer.cs b/LongoMatch.Multimedia/Utils/GStreamer.cs
similarity index 75%
rename from LongoMatch/Common/GStreamer.cs
rename to LongoMatch.Multimedia/Utils/GStreamer.cs
index 999ea3f..bcb00b2 100644
--- a/LongoMatch/Common/GStreamer.cs
+++ b/LongoMatch.Multimedia/Utils/GStreamer.cs
@@ -19,16 +19,16 @@ using System;
 using System.IO;
 using System.Runtime.InteropServices;
 using Gtk;
-using LongoMatch.Gui;
+using LongoMatch.Video;
+using Mono.Unix;
+using LongoMatch.Common;
 
-namespace LongoMatch.Common
+namespace LongoMatch.Multimedia.Utils
 {
 	public class GStreamer
 	{
 		
 		[DllImport("libgstreamer-0.10.dll") /* willfully unmapped */ ]
-		static extern void gst_init (int argc, string argv);
-		[DllImport("libgstreamer-0.10.dll") /* willfully unmapped */ ]
 		static extern IntPtr gst_registry_get_default ();
 		[DllImport("libgstreamer-0.10.dll") /* willfully unmapped */ ]
 		static extern IntPtr gst_registry_lookup_feature (IntPtr raw, string name);
@@ -39,8 +39,10 @@ namespace LongoMatch.Common
 		private const string REGISTRY_PATH = "registry.bin";
 		
 		public static void Init() {
-			SetUpEnvironment ();
-			gst_init (0, "");
+			Log.Information("Initializing GStreamer.");
+			SetUpEnvironment();
+			MultimediaFactory.InitBackend();
+			Log.Information("GStreamer initialized successfully.");
 		}
 		
 		public static bool CheckInstallation () {
@@ -69,11 +71,11 @@ namespace LongoMatch.Common
 			
 			/* Use a custom path for the registry in Windows */
 			Environment.SetEnvironmentVariable("GST_REGISTRY", registryPath);
-			Environment.SetEnvironmentVariable("GST_PLUGIN_PATH",MainClass.RelativeToPrefix("lib\\gstreamer-0.10"));
+			Environment.SetEnvironmentVariable("GST_PLUGIN_PATH", Config.RelativeToPrefix("lib\\gstreamer-0.10"));
 		}
 		
 		private static string GetGstDirectory () {
-			return Path.Combine (MainClass.HomeDir(), GST_DIRECTORY);
+			return Path.Combine (Config.HomeDir(), GST_DIRECTORY);
 		}
 		
 		private static string GetRegistryPath() {
@@ -105,10 +107,14 @@ namespace LongoMatch.Common
 		
 		private static void HandleInstallationError () {
 			File.Delete(GetRegistryPath());
-			
-			MessagePopup.PopupMessage(null, MessageType.Error, "An error has been detected in the current " +
-				"installation.\n Try restarting " + Constants.SOFTWARE_NAME + " and contact with the " +
-			    "development team if the problem persists.");
+			MessageDialog md = new MessageDialog(null, DialogFlags.Modal,
+			                                     MessageType.Error, ButtonsType.Ok,
+			                                     Catalog.GetString("An error has been detected in the current " +
+			                                                       "installation.") + "\n" +
+			                                     Catalog.GetString(String.Format ("Try restarting {0} and contact with" +
+			                                      	"the development team if the problem persists.", Constants.SOFTWARE_NAME)));
+			md.Run();
+			md.Destroy();
 		}
 	}
 }
diff --git a/CesarPlayer/Utils/IMetadataReader.cs b/LongoMatch.Multimedia/Utils/IMetadataReader.cs
similarity index 100%
rename from CesarPlayer/Utils/IMetadataReader.cs
rename to LongoMatch.Multimedia/Utils/IMetadataReader.cs
diff --git a/CesarPlayer/Utils/MpegRemuxer.cs b/LongoMatch.Multimedia/Utils/MpegRemuxer.cs
similarity index 100%
rename from CesarPlayer/Utils/MpegRemuxer.cs
rename to LongoMatch.Multimedia/Utils/MpegRemuxer.cs
diff --git a/CesarPlayer/Utils/PreviewMediaFile.cs b/LongoMatch.Multimedia/Utils/PreviewMediaFile.cs
similarity index 66%
rename from CesarPlayer/Utils/PreviewMediaFile.cs
rename to LongoMatch.Multimedia/Utils/PreviewMediaFile.cs
index f334842..6015449 100644
--- a/CesarPlayer/Utils/PreviewMediaFile.cs
+++ b/LongoMatch.Multimedia/Utils/PreviewMediaFile.cs
@@ -17,6 +17,8 @@
 //
 
 using System;
+using LongoMatch.Multimedia.Interfaces;
+using LongoMatch.Store;
 using LongoMatch.Video;
 using LongoMatch.Video.Common;
 using LongoMatch.Video.Player;
@@ -27,46 +29,13 @@ namespace LongoMatch.Video.Utils
 {
 
 	[Serializable]
-	public class PreviewMediaFile:MediaFile
+	public class PreviewMediaFile
 	{
-
-		private byte[] thumbnailBuf;
-
 		const int THUMBNAIL_MAX_HEIGHT=72;
 		const int THUMBNAIL_MAX_WIDTH=96;
 
-		public PreviewMediaFile() {}
-
-		public PreviewMediaFile(string filePath,
-		                        long length,
-		                        ushort fps,
-		                        bool hasAudio,
-		                        bool hasVideo,
-		                        string VideoEncoderType,
-		                        string AudioEncoderType,
-		                        uint videoWidth,
-		                        uint videoHeight,
-		                        Pixbuf preview):base(filePath,length,fps,hasAudio,hasVideo,VideoEncoderType,AudioEncoderType,videoWidth,videoHeight)
-		{
-			this.Preview=preview;
-		}
-
-		public Pixbuf Preview {
-			get {
-				if(thumbnailBuf != null)
-					return new Pixbuf(thumbnailBuf);
-				else return null;
-			}
-			set {
-				if(value != null) {
-					thumbnailBuf = value.SaveToBuffer("png");
-					value.Dispose();
-				}
-				else thumbnailBuf = null;
-			}
-		}
-
-		public new static PreviewMediaFile GetMediaFile(string filePath) {
+		/* FIXME: hackish as hell! */
+		public static MediaFile DiscoverFile(string filePath) {
 			int duration=0;
 			bool hasVideo;
 			bool hasAudio;
@@ -105,12 +74,11 @@ namespace LongoMatch.Video.Utils
 				width = (int) reader.GetMetadata(MetadataType.DimensionY);
 				reader.Close();
 				reader.Dispose();
-
-				return new PreviewMediaFile(filePath,duration*1000,
-				                            (ushort)fps,hasAudio,
-				                            hasVideo,VideoEncoderType,
-				                            AudioEncoderType,(uint)height,
-				                            (uint)width,preview);
+				return new LongoMatch.Store.MediaFile(filePath,duration*1000,
+				                     (ushort)fps,hasAudio,
+				                     hasVideo,VideoEncoderType,
+				                     AudioEncoderType,(uint)height,
+				                     (uint)width,preview);
 			}
 			catch(GLib.GException ex) {
 				throw new Exception(Catalog.GetString("Invalid video file:")+"\n"+ex.Message);
diff --git a/CesarPlayer/Utils/TimeString.cs b/LongoMatch.Multimedia/Utils/TimeString.cs
similarity index 100%
rename from CesarPlayer/Utils/TimeString.cs
rename to LongoMatch.Multimedia/Utils/TimeString.cs
diff --git a/CesarPlayer/Utils/Device.cs b/LongoMatch.Multimedia/Utils/VideoDevice.cs
similarity index 56%
rename from CesarPlayer/Utils/Device.cs
rename to LongoMatch.Multimedia/Utils/VideoDevice.cs
index 63efda2..e6ada1c 100644
--- a/CesarPlayer/Utils/Device.cs
+++ b/LongoMatch.Multimedia/Utils/VideoDevice.cs
@@ -1,92 +1,62 @@
-//
-//  Copyright (C) 2010 Andoni Morales Alastruey
-//
+// 
+//  Copyright (C) 2011 Andoni Morales Alastruey
+// 
 //  This program is free software; you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
 //  the Free Software Foundation; either version 2 of the License, or
 //  (at your option) any later version.
-//
+// 
 //  This program is distributed in the hope that it will be useful,
 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 //  GNU General Public License for more details.
-//
+//  
 //  You should have received a copy of the GNU General Public License
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
-//
-
+// 
 using System;
 using System.Collections.Generic;
-using LongoMatch.Video.Capturer;
-using LongoMatch.Video.Common;
 using Mono.Unix;
 
-namespace LongoMatch.Video.Utils
-{
-
+using LongoMatch.Common;
+using LongoMatch.Video.Common;
+using LongoMatch.Video.Capturer;
 
-	public class Device
+namespace LongoMatch.Multimedia.Utils
+{
+	public class VideoDevice
 	{
-		public Device() {
-
-		}
-
-		/// <summary>
-		/// Device Type among Video, Audio or DV (for dv cameras)
-		/// </summary>
-		public DeviceType DeviceType {
-			get;
-			set;
-		}
-
-		/// <summary>
-		/// Device id, can be a human friendly name (for DirectShow devices),
-		/// the de device name (/dev/video0) or the GUID (dv1394src)
-		/// </summary>
-		public string ID  {
-			get;
-			set;
-		}
-
-		/// <summary>
-		/// The name of the gstreamer element property used to set the device
-		/// </summary>
-
-		public string IDProperty {
-			get;
-			set;
-		}
-
-		static public List<Device> ListVideoDevices() {
+		
+		static public List<Device> ListVideoDevices (){
 			List<Device> devicesList  = new List<Device>();
-
+			
 			/* Generate the list of devices and add the gconf one at the bottom
-			 * so that DV sources are always selected before, at least on Linux,
+			 * so that DV sources are always selected before, at least on Linux, 
 			 * since on Windows both raw an dv sources are listed from the same
 			 * source element (dshowvideosrc) */
-			foreach(string devName in GstCameraCapturer.VideoDevices) {
+			foreach (string devName in GstCameraCapturer.VideoDevices){
 				string idProp;
-
-				if(Environment.OSVersion.Platform == PlatformID.Unix)
-					idProp = Constants.DV1394SRC_PROP;
-				else
-					idProp = Constants.DSHOWVIDEOSINK_PROP;
-
+				
+				if (Environment.OSVersion.Platform == PlatformID.Unix)
+					idProp = VideoConstants.DV1394SRC_PROP;
+				else 
+					idProp = VideoConstants.DSHOWVIDEOSINK_PROP;
+				
 				devicesList.Add(new Device {
 					ID = devName,
 					IDProperty = idProp,
-					DeviceType = DeviceType.DV
-				});
+					DeviceType = DeviceType.DV});
 			}
-			if(Environment.OSVersion.Platform == PlatformID.Unix) {
+			if (Environment.OSVersion.Platform == PlatformID.Unix){
 				devicesList.Add(new Device {
 					ID = Catalog.GetString("Default device"),
 					IDProperty = "",
-					DeviceType = DeviceType.Video
-				});
-			}
+					DeviceType = DeviceType.Video});
+			}			
 			return devicesList;
 		}
+
 	}
 }
+
diff --git a/LongoMatch.Services/LongoMatch.Services.mdp b/LongoMatch.Services/LongoMatch.Services.mdp
new file mode 100644
index 0000000..9bca3ed
--- /dev/null
+++ b/LongoMatch.Services/LongoMatch.Services.mdp
@@ -0,0 +1,39 @@
+<Project name="LongoMatch.Services" fileversion="2.0" DefaultNamespace="LongoMatch.Services" language="C#" targetFramework="4.0" ctype="DotNetProject">
+  <Configurations active="Release">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Services" />
+      <Build debugmode="True" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" definesymbols="DEBUG" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="../bin" assembly="LongoMatch.Services" />
+      <Build debugmode="False" target="Library" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File subtype="Directory" buildaction="Compile" name="." />
+    <File subtype="Code" buildaction="Compile" name="Services/DataBase.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/TemplatesService.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/RenderingJobsManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/Core.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/HotKeysManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/EventsManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/VideoDrawingsManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/PlaylistManager.cs" />
+    <File subtype="Code" buildaction="Compile" name="Services/ProjectsManager.cs" />
+  </Contents>
+  <References>
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
+    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI" />
+    <ProjectReference type="Gac" localcopy="True" refto="Db4objects.Db4o, Version=7.4.121.14026, Culture=neutral, PublicKeyToken=6199cd4f203aa8eb" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Multimedia" />
+    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI.Multimedia" />
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+  </References>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.Services/Makefile.am b/LongoMatch.Services/Makefile.am
new file mode 100644
index 0000000..3579540
--- /dev/null
+++ b/LongoMatch.Services/Makefile.am
@@ -0,0 +1,17 @@
+ASSEMBLY = LongoMatch.Services
+TARGET = library
+
+LINK = $(REF_DEP_LONGOMATCH_SERVICES)
+
+SOURCES = \
+	Services/PlaylistManager.cs \
+	Services/VideoDrawingsManager.cs \
+	Services/ProjectsManager.cs \
+	Services/TemplatesService.cs \
+	Services/EventsManager.cs \
+	Services/Core.cs \
+	Services/HotKeysManager.cs \
+	Services/DataBase.cs \
+	Services/RenderingJobsManager.cs
+
+include $(top_srcdir)/build/build.mk
diff --git a/LongoMatch.Services/Services/Core.cs b/LongoMatch.Services/Services/Core.cs
new file mode 100644
index 0000000..3c1a398
--- /dev/null
+++ b/LongoMatch.Services/Services/Core.cs
@@ -0,0 +1,179 @@
+// 
+//  Copyright (C) 2011 Andoni Morales Alastruey
+// 
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+// 
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//  GNU General Public License for more details.
+//  
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+// 
+using System;
+using System.IO;
+using Gtk;
+using Mono.Unix;
+
+using LongoMatch.Gui;
+using LongoMatch.DB;
+using LongoMatch.Common;
+using LongoMatch.Store;
+
+namespace LongoMatch.Services
+{
+	public class Core
+	{
+		static DataBase db;
+		static TemplatesService ts;
+		static EventsManager eManager;
+		static HotKeysManager hkManager;
+		static MainWindow mainWindow;
+
+		public static void Init()
+		{
+			Log.Debugging = Debugging;
+			Log.Information("Starting " + Constants.SOFTWARE_NAME);
+
+			SetupBaseDir();
+
+			/* Init internationalization support */
+			Catalog.Init(Constants.SOFTWARE_NAME.ToLower(),Config.RelativeToPrefix("share/locale"));
+
+			/* Init Gtk */
+			Application.Init();
+
+			/* Check default folders */
+			CheckDirs();
+		}
+
+		public static void Start(MainWindow mainWindow) {
+			Core.mainWindow = mainWindow;
+			StartServices(mainWindow);
+			BindEvents(mainWindow);
+		}
+		
+		public static void StartServices(MainWindow mainWindow){
+			RenderingJobsManager videoRenderer;
+			ProjectsManager projectsManager;
+				
+			/* Start TemplatesService */
+			ts = new TemplatesService(Config.configDirectory);
+
+			/* Start DB services */
+			db = new DataBase(Path.Combine(Config.DBDir(),Constants.DB_FILE));
+			
+			/* Start the events manager */
+			eManager = new EventsManager(mainWindow);
+
+			/* Start the hotkeys manager */
+			hkManager = new HotKeysManager();
+			hkManager.newMarkEvent += eManager.OnNewTag;
+
+			/* Start the rendering jobs manager */
+			videoRenderer = new RenderingJobsManager(mainWindow.RenderingStateBar);
+			mainWindow.NewJobEvent += (job) => {videoRenderer.AddJob(job);};
+			
+			projectsManager = new ProjectsManager(mainWindow);
+			projectsManager.OpenedProjectChanged += OnOpenedProjectChanged;
+		}
+		
+		public static void BindEvents(MainWindow mainWindow) {
+			/* Connect player events */
+			/* FIXME:
+			player.Prev += OnPrev;
+			player.Next += OnNext;
+			player.Tick += OnTick;
+			player.SegmentClosedEvent += OnSegmentClosedEvent;
+			player.DrawFrame += OnDrawFrame;*/
+		}
+
+		public static void CheckDirs() {
+			if(!System.IO.Directory.Exists(Config.HomeDir()))
+				System.IO.Directory.CreateDirectory(Config.HomeDir());
+			if(!System.IO.Directory.Exists(Config.TemplatesDir()))
+				System.IO.Directory.CreateDirectory(Config.TemplatesDir());
+			if(!System.IO.Directory.Exists(Config.SnapshotsDir()))
+				System.IO.Directory.CreateDirectory(Config.SnapshotsDir());
+			if(!System.IO.Directory.Exists(Config.PlayListDir()))
+				System.IO.Directory.CreateDirectory(Config.PlayListDir());
+			if(!System.IO.Directory.Exists(Config.DBDir()))
+				System.IO.Directory.CreateDirectory(Config.DBDir());
+			if(!System.IO.Directory.Exists(Config.VideosDir()))
+				System.IO.Directory.CreateDirectory(Config.VideosDir());
+			if(!System.IO.Directory.Exists(Config.TempVideosDir()))
+				System.IO.Directory.CreateDirectory(Config.TempVideosDir());
+		}
+
+		public static DataBase DB {
+			get {
+				return db;
+			}
+		}
+		
+		public static TemplatesService TemplatesService {
+			get {
+				return ts;
+			}
+		}
+		
+		private static void OnOpenedProjectChanged (Project project, ProjectType projectType) {
+			if (project != null) {
+				hkManager.Categories=project.Categories;
+				mainWindow.KeyPressEvent -= hkManager.KeyListener;
+			} else {
+				mainWindow.KeyPressEvent += hkManager.KeyListener;
+			}
+			
+			eManager.OpenedProject = project;
+			eManager.OpenedProjectType = projectType;
+		}
+		
+		private static void SetupBaseDir() {
+			string home;
+			
+			if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
+				Config.baseDirectory = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"../");
+			}
+			else
+				Config.baseDirectory = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"../../");
+			
+			/* Check for the magic file PORTABLE to check if it's a portable version
+			 * and the config goes in the same folder as the binaries */
+			if (File.Exists(System.IO.Path.Combine(Config.baseDirectory, Constants.PORTABLE_FILE)))
+				home = Config.baseDirectory;
+			else
+				home = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+			
+			Config.homeDirectory = System.IO.Path.Combine(home,Constants.SOFTWARE_NAME);
+			if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+				Config.configDirectory = Config.homeDirectory;
+			else
+				Config.configDirectory = System.IO.Path.Combine(home,".longomatch");
+		}
+
+		private static bool? debugging = null;	
+		public static bool Debugging {
+			get {
+				if(debugging == null) {
+					debugging = EnvironmentIsSet("LGM_DEBUG");
+				}
+				return debugging.Value;
+			}
+			set {
+				debugging = value;
+				Log.Debugging = Debugging;
+			}
+		}
+
+		public static bool EnvironmentIsSet(string env)
+		{
+			return !String.IsNullOrEmpty(Environment.GetEnvironmentVariable(env));
+		}
+	}
+}
diff --git a/LongoMatch/Services/DataBase.cs b/LongoMatch.Services/Services/DataBase.cs
similarity index 96%
rename from LongoMatch/Services/DataBase.cs
rename to LongoMatch.Services/Services/DataBase.cs
index a26803a..be82053 100644
--- a/LongoMatch/Services/DataBase.cs
+++ b/LongoMatch.Services/Services/DataBase.cs
@@ -20,17 +20,14 @@
 
 using System;
 using System.Collections.Generic;
-using System.Linq;
 using System.IO;
 using Db4objects.Db4o;
 using Db4objects.Db4o.Query;
 using Gtk;
 using LongoMatch.Common;
-using LongoMatch.Gui;
+using LongoMatch.Interfaces;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
-using LongoMatch.Video.Utils;
-using Mono.Unix;
 
 namespace LongoMatch.DB
 {
@@ -41,7 +38,7 @@ namespace LongoMatch.DB
 	/// Projects are uniquely indentified by their filename, assuming that you can't
 	/// create two projects for the same video file.
 	/// </summary>
-	public sealed class DataBase
+	public sealed class DataBase: IDatabase
 	{
 		// File path of the database
 		private string file;
@@ -138,10 +135,12 @@ namespace LongoMatch.DB
 			List<ProjectDescription> list = new List<ProjectDescription>();
 			IObjectContainer db = Db4oFactory.OpenFile(file);
 			
+			Log.Debug("Getting all projects");
 			try	{
 				IQuery query = db.Query();
 				query.Constrain(typeof(ProjectDescription));
 				IObjectSet result = query.Execute();
+				Log.Debug(String.Format("Found {0} projects", result.Count));
 				while(result.HasNext()) {
 					try {
 						ProjectDescription desc = (ProjectDescription)result.Next();
@@ -173,6 +172,7 @@ namespace LongoMatch.DB
 			Project ret = null;
 			IObjectContainer db = Db4oFactory.OpenFile(file);
 			
+			Log.Debug("Getting project with ID: " + id);
 			try	{
 				IQuery query = GetQueryProjectById (db, id);
 				IObjectSet result = query.Execute();
@@ -194,6 +194,8 @@ namespace LongoMatch.DB
 		/// </param>
 		public void AddProject(Project project) {
 			IObjectContainer db = Db4oFactory.OpenFile(file);
+			
+			Log.Debug("Adding new project: " + project);
 			try {
 				db.Store(project);
 				db.Commit();
@@ -215,6 +217,8 @@ namespace LongoMatch.DB
 		public void RemoveProject(Guid id) {
 			SetDeleteCascadeOptions();
 			IObjectContainer db = Db4oFactory.OpenFile(file);
+
+			Log.Debug("Removing project with ID: " + id);
 			try	{
 				IQuery query = GetQueryProjectById(db, id);
 				IObjectSet result = query.Execute();
@@ -246,6 +250,7 @@ namespace LongoMatch.DB
 			SetDeleteCascadeOptions();
 			IObjectContainer db = Db4oFactory.OpenFile(file);
 			
+			Log.Debug("Updating project " + project);
 			try	{
 				IQuery query = GetQueryProjectById(db, project.UUID);
 				IObjectSet result = query.Execute();
@@ -366,7 +371,7 @@ namespace LongoMatch.DB
 			if (lastBackup.Date + maxDaysWithoutBackup >= now)
 				return;
 			
-			backupFilepath = Path.Combine(MainClass.DBDir(), backupFilename);
+			backupFilepath = Path.Combine(Config.DBDir(), backupFilename);
 			if (File.Exists(backupFilepath))
 				File.Delete(backupFilepath);
 
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
new file mode 100644
index 0000000..ba09be7
--- /dev/null
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -0,0 +1,321 @@
+// EventsManager.cs
+//
+//  Copyright (C2007-2009 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+//Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//
+
+using System;
+using System.Collections.Generic;
+using Gdk;
+using Gtk;
+using LongoMatch.Common;
+using LongoMatch.Gui;
+using LongoMatch.Gui.Component;
+using LongoMatch.Gui.Dialog;
+using LongoMatch.Handlers;
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+using LongoMatch.Video.Common;
+using LongoMatch.Video.Editor;
+using LongoMatch.Video.Utils;
+using LongoMatch.Multimedia.Interfaces;
+using Mono.Unix;
+
+namespace LongoMatch.Services
+{
+
+
+	public class EventsManager
+	{
+
+		private FramesSeriesCapturer fsc;
+		private FramesCaptureProgressDialog fcpd;
+		private VideoDrawingsManager drawingManager;
+
+		/* Current play loaded. null if no play is loaded */
+		TimeNode selectedTimeNode=null;
+		/* current project in use */
+		Project openedProject;
+		ProjectType projectType;
+		Time startTime;
+		
+		MainWindow mainWindow;
+		PlayerBin player;
+		CapturerBin capturer;
+
+		public EventsManager(MainWindow mainWindow)
+		{
+			this.mainWindow = mainWindow;
+			this.player = mainWindow.Player;
+			this.capturer = mainWindow.Capturer;
+			this.drawingManager = new VideoDrawingsManager(player);
+			ConnectSignals();
+		}
+
+		public  Project OpenedProject {
+			set {
+				openedProject = value;
+			}
+		}
+
+		public ProjectType OpenedProjectType {
+			set {
+				projectType = value;
+			}
+		}
+
+		private void ConnectSignals() {
+			/* Adding Handlers for each event */
+
+			/* Connect tagging related events */
+			mainWindow.NewTagEvent += OnNewTag;
+			mainWindow.NewTagStartEvent += OnNewPlayStart;
+			mainWindow.NewTagStopEvent += OnNewPlayStop;
+			mainWindow.NewTagAtFrameEvent += OnNewTagAtFrame;
+			mainWindow.TimeNodeChanged += OnTimeNodeChanged;
+			mainWindow.PlaysDeletedEvent += OnPlaysDeleted;
+			mainWindow.PlaySelectedEvent += OnPlaySelected;
+
+			/* Connect playlist events */
+			mainWindow.PlayListNodeSelectedEvent += (tn) => {selectedTimeNode = tn;};
+			/* Connect tags events */
+			mainWindow.TagPlayEvent += OnTagPlay;
+
+			/* Connect SnapshotSeries events */
+			mainWindow.SnapshotSeriesEvent += OnSnapshotSeries;
+			
+			/* Connect player events */
+			player.Prev += OnPrev;
+			player.SegmentClosedEvent += OnSegmentClosedEvent;
+			player.DrawFrame += OnDrawFrame;
+		}
+
+		private void ProcessNewTag(Category category,Time pos) {
+			Time length, startTime, stopTime, start, stop, fStart, fStop;
+
+			if(player == null || openedProject == null)
+				return;
+
+			/* Get the default lead and lag time for the category */
+			startTime = category.Start;
+			stopTime = category.Stop;
+			/* Calculate boundaries of the segment */
+			start = pos - startTime;
+			stop = pos + stopTime;
+			fStart = (start < new Time {MSeconds =0}) ? new Time {MSeconds = 0} : start;
+
+			if(projectType == ProjectType.FakeCaptureProject ||
+			   projectType == ProjectType.CaptureProject) {
+				fStop = stop;
+			} else {
+				length = new Time {MSeconds = (int)player.StreamLength};
+				fStop = (stop > length) ? length: stop;
+			}
+			AddNewPlay(fStart, fStop, category);
+		}
+
+		private void AddNewPlay(Time start, Time stop, Category category) {
+			Pixbuf miniature;
+
+			Log.Debug(String.Format("New play created start:{0} stop:{1} category:{2}",
+									start, stop, category));
+			/* Get the current frame and get a thumbnail from it */
+			if(projectType == ProjectType.CaptureProject) {
+				if(!capturer.Capturing) {
+					MessagePopup.PopupMessage(capturer, MessageType.Info,
+					                          Catalog.GetString("You can't create a new play if the capturer "+
+					                                            "is not recording."));
+					return;
+				}
+				miniature = capturer.CurrentMiniatureFrame;
+			}
+			else if(projectType == ProjectType.FileProject)
+				miniature = player.CurrentMiniatureFrame;
+			else
+				miniature = null;
+			
+			/* Add the new created play to the project and update the GUI*/
+			var play = openedProject.AddPlay(category, start, stop,miniature);
+			mainWindow.AddPlay(play);
+			/* Tag subcategories of the new play */
+			LaunchPlayTagger(play);
+		}
+
+		protected virtual void OnNewTagAtFrame(Category category, int frame) {
+			Time pos = new Time { MSeconds = frame*1000/openedProject.Description.File.Fps};
+			player.CloseActualSegment();
+			player.SeekTo((long)pos.MSeconds, true);
+			ProcessNewTag(category,pos);
+		}
+
+		public virtual void OnNewTag(Category category) {
+			Time pos;
+
+			if(projectType == ProjectType.FakeCaptureProject ||
+			   projectType == ProjectType.CaptureProject) {
+				pos =  new Time { MSeconds = (int)capturer.CurrentTime};
+			} else {
+				pos = new Time {MSeconds = (int)player.CurrentTime};
+			}
+			ProcessNewTag(category,pos);
+		}
+
+		public virtual void OnNewPlayStart() {
+			startTime = new Time {MSeconds = (int)player.CurrentTime};
+			Log.Debug("New play start time: " + startTime);
+		}
+
+		public virtual void OnNewPlayStop(Category category) {
+			int diff;
+			Time stopTime = new Time {MSeconds = (int)player.CurrentTime};
+
+			Log.Debug("New play stop time: " + stopTime);
+			diff = stopTime.MSeconds - startTime.MSeconds;
+
+			if(diff < 0) {
+				MessagePopup.PopupMessage(mainWindow, MessageType.Warning,
+				                          Catalog.GetString("The stop time is smaller than the start time. "+
+				                                            "The play will not be added."));
+				return;
+			}
+			if(diff < 500) {
+				int correction = 500 - diff;
+				if(startTime.MSeconds - correction > 0)
+					startTime = startTime - correction;
+				else
+					stopTime = stopTime + correction;
+			}
+			AddNewPlay(startTime, stopTime, category);
+		}
+
+		private void LaunchPlayTagger(Play play) {
+			TaggerDialog tg = new TaggerDialog(play.Category, play.Tags, play.Players, play.Teams,
+			                                   openedProject.LocalTeamTemplate, openedProject.VisitorTeamTemplate);
+			tg.TransientFor = mainWindow as Gtk.Window;
+			tg.Run();
+			tg.Destroy();
+		}
+
+		protected virtual void OnPlaySelected(Play play)
+		{
+			Log.Debug("Play selected: " + play);
+			selectedTimeNode = play;
+			player.SetStartStop(play.Start.MSeconds,play.Stop.MSeconds);
+			drawingManager.Play=play;
+			mainWindow.UpdateSelectedPlay(play);
+		}
+
+		protected virtual void OnTimeNodeChanged(TimeNode tNode, object val)
+		{
+			/* FIXME: Tricky, create a new handler for categories */
+			if(tNode is Play && val is Time) {
+				if(tNode != selectedTimeNode)
+					OnPlaySelected((Play)tNode);
+				Time pos = (Time)val;
+				if(pos == tNode.Start) {
+					player.UpdateSegmentStartTime(pos.MSeconds);
+				}
+				else {
+					player.UpdateSegmentStopTime(pos.MSeconds);
+				}
+			}
+			else if(tNode is Category) {
+				mainWindow.UpdateCategories(openedProject.Categories);
+			}
+		}
+
+		protected virtual void OnPlaysDeleted(List<Play> plays)
+		{
+			Log.Debug(plays.Count + " plays deleted");
+			mainWindow.DeletePlays(plays);
+			openedProject.RemovePlays(plays);
+
+			if(projectType == ProjectType.FileProject) {
+				player.CloseActualSegment();
+				Core.DB.UpdateProject(openedProject);
+			}
+		}
+
+		protected virtual void OnSegmentClosedEvent()
+		{
+			selectedTimeNode = null;
+		}
+
+		protected virtual void OnSnapshotSeries(Play tNode) {
+			SnapshotsDialog sd;
+			uint interval;
+			string seriesName;
+			string outDir;
+
+			player.Pause();
+
+			sd= new SnapshotsDialog();
+			sd.TransientFor= mainWindow as Gtk.Window;
+			sd.Play = tNode.Name;
+
+			if(sd.Run() == (int)ResponseType.Ok) {
+				sd.Destroy();
+				interval = sd.Interval;
+				seriesName = sd.SeriesName;
+				outDir = System.IO.Path.Combine(Config.SnapshotsDir(),seriesName);
+				fsc = new FramesSeriesCapturer(openedProject.Description.File.FilePath,
+				                               tNode.Start.MSeconds,tNode.Stop.MSeconds,
+				                               interval,outDir);
+				fcpd = new FramesCaptureProgressDialog(fsc);
+				fcpd.TransientFor = mainWindow as Gtk.Window;
+				fcpd.Run();
+				fcpd.Destroy();
+			}
+			else
+				sd.Destroy();
+		}
+		
+		protected virtual void OnPrev()
+		{
+			if(selectedTimeNode is Play)
+				player.SeekInSegment(selectedTimeNode.Start.MSeconds);
+			else if(selectedTimeNode == null)
+				player.SeekTo(0,false);
+		}
+
+		protected virtual void OnTimeline2PositionChanged(Time pos)
+		{
+			player.SeekInSegment(pos.MSeconds);
+		}
+
+		protected virtual void OnDrawFrame(int time) {
+			Pixbuf pixbuf=null;
+			DrawingTool dialog = new DrawingTool();
+
+			player.Pause();
+			pixbuf = player.CurrentFrame;
+
+			dialog.Image = pixbuf;
+			dialog.TransientFor = (Gtk.Window)player.Toplevel;
+			if(selectedTimeNode != null)
+				dialog.SetPlay((selectedTimeNode as Play),
+				               time);
+			pixbuf.Dispose();
+			dialog.Run();
+			dialog.Destroy();
+		}
+
+		protected virtual void OnTagPlay(Play play) {
+			LaunchPlayTagger(play);
+		}
+	}
+}
diff --git a/LongoMatch/Handlers/HotKeysManager.cs b/LongoMatch.Services/Services/HotKeysManager.cs
similarity index 94%
rename from LongoMatch/Handlers/HotKeysManager.cs
rename to LongoMatch.Services/Services/HotKeysManager.cs
index 2a57cf5..7d6228a 100644
--- a/LongoMatch/Handlers/HotKeysManager.cs
+++ b/LongoMatch.Services/Services/HotKeysManager.cs
@@ -23,15 +23,16 @@ using Gdk;
 using Gtk;
 using LongoMatch.Store;
 using LongoMatch.Store.Templates;
+using LongoMatch.Handlers;
 
-namespace LongoMatch.Handlers
+namespace LongoMatch.Services
 {
 
 
 	public class HotKeysManager
 	{
 		private Dictionary<HotKey, Category> dic;
-		public event NewMarkEventHandler newMarkEvent;
+		public event NewTagHandler newMarkEvent;
 
 		public HotKeysManager()
 		{
diff --git a/LongoMatch.Services/Services/PlaylistManager.cs b/LongoMatch.Services/Services/PlaylistManager.cs
new file mode 100644
index 0000000..f86c5fe
--- /dev/null
+++ b/LongoMatch.Services/Services/PlaylistManager.cs
@@ -0,0 +1,219 @@
+// 
+//  Copyright (C) 2011 Andoni Morales Alastruey
+// 
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+// 
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//  GNU General Public License for more details.
+//  
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+// 
+using System;
+using Gtk;
+
+using LongoMatch.Gui.Component;
+using LongoMatch.Gui;
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+using LongoMatch.Common;
+using Mono.Unix;
+
+
+namespace LongoMatch.Services
+{
+	public class PlaylistManager
+	{
+		IPlaylistWidget playlistWidget;
+		IPlayList playlist;
+		PlayerBin player;
+		/* FIXME */
+		Project openedProject;
+		TimeNode selectedTimeNode;
+		
+		bool clockStarted;
+		uint timeout;
+		
+		public PlaylistManager (MainWindow mainWindow)
+		{
+			playlistWidget = mainWindow.Playlist;
+			player = mainWindow.Player;
+			BindEvents(mainWindow, mainWindow.Player);
+		}
+		
+		public void Stop() {
+			StopClock();
+		}
+		
+		public void Load(string filePath) {
+			try {
+				playlist = PlayList.Load(filePath);
+				playlistWidget.Load(playlist);
+			} catch (Exception e){
+				Log.Exception (e);
+				MessagePopup.PopupMessage(playlistWidget as Gtk.Widget ,MessageType.Error, 
+				                          Catalog.GetString("The file you are trying to load is not a playlist or it's not compatible with the current version"));
+			}
+		}
+		
+		private void BindEvents(MainWindow mainWindow, PlayerBin player) {
+			/* Track loaded element */
+			mainWindow.PlaySelectedEvent += (p) => {selectedTimeNode = p;};
+			player.SegmentClosedEvent += () => {selectedTimeNode = null;};
+			
+			/* Handle New/Open/Save playlist */
+			mainWindow.OpenPlaylistEvent += OnOpenPlaylist;
+			mainWindow.NewPlaylistEvent += OnNewPlaylist;
+			mainWindow.SavePlaylistEvent += OnSavePlaylist;
+			
+			/* Handle Add/Select/Rate events from other widgets */
+			mainWindow.PlayListNodeAddedEvent += OnPlayListNodeAdded;
+			mainWindow.PlayListNodeSelectedEvent += LoadPlaylistPlay;
+			mainWindow.ApplyRateEvent += (p) => {p.Rate = player.Rate;};
+			
+			/* Handle Next/Prev from the player */
+			player.Next += () => {Next();};
+			player.Prev += () => {
+				if(selectedTimeNode is PlayListPlay)
+					Prev();
+			};
+		}
+		
+		private void Add(PlayListPlay plNode) {
+			playlist.Add(plNode);
+			playlistWidget.Add(plNode);
+		}
+		
+		private void LoadPlaylistPlay(PlayListPlay play)
+		{
+			StartClock();
+			player.SetPlayListElement(play.MediaFile.FilePath, play.Start.MSeconds,
+			                          play.Stop.MSeconds, play.Rate, playlist.HasNext());
+			selectedTimeNode = play;
+		}
+		
+		private bool Next() {
+			if(openedProject != null) {
+				MessagePopup.PopupMessage(playlistWidget as Gtk.Widget, MessageType.Error,
+				                          Catalog.GetString("Please, close the opened project to play the playlist."));
+				Stop();
+				return false;
+			}
+			
+			if (!playlist.HasNext()) {
+				Stop();
+				return false;
+			}
+			
+			var plNode = playlist.Next();
+			playlistWidget.SetActivePlay(plNode, playlist.GetCurrentIndex());
+			
+			if (!plNode.Valid)
+				return Next();
+			
+			LoadPlaylistPlay(plNode);
+			return true;
+		}
+
+		private void Prev() {
+			/* Select the previous element if we haven't played 500ms */
+			if ((player.AccurateCurrentTime - selectedTimeNode.Start.MSeconds) < 500) {
+				if (playlist.HasPrev()) {
+					var play = playlist.Prev();
+					playlistWidget.SetActivePlay(selectedTimeNode as PlayListPlay,
+					                             playlist.GetCurrentIndex());
+					LoadPlaylistPlay(play);
+				}
+			} else {
+				/* Seek to the beginning of the segment */
+				player.SeekTo(selectedTimeNode.Start.MSeconds,true);
+				player.Rate = selectedTimeNode.Rate;
+			}
+		}
+		
+		private void StartClock()	{
+			if(player!=null && !clockStarted) {
+				timeout = GLib.Timeout.Add(20,CheckStopTime);
+				clockStarted=true;
+			}
+		}
+
+		private void StopClock() {
+			if(clockStarted) {
+				GLib.Source.Remove(timeout);
+				clockStarted = false;
+			}
+		}
+
+		private bool CheckStopTime() {
+			if(player.AccurateCurrentTime >= selectedTimeNode.Stop.MSeconds-200)
+				Next();
+			return true;
+		}
+		
+		private FileFilter FileFilter {
+			get {
+				FileFilter filter = new FileFilter();
+				filter.Name = Catalog.GetString("LongoMatch playlist");
+				filter.AddPattern("*" + Constants.PLAYLIST_EXT);
+				return filter;
+			}
+		}
+		
+		protected virtual void OnPlayListNodeAdded(Play play)
+		{
+			Add(new PlayListPlay {
+				MediaFile = openedProject.Description.File,
+				Drawings = play.Drawings,
+				Start = play.Start,
+				Stop = play.Stop,
+				Name = play.Name,
+				Rate = 1.0f,
+			});
+		}
+		
+		protected virtual void OnSavePlaylist()
+		{
+			if(playlist != null) {
+				playlist.Save();
+			}
+		}
+
+		protected virtual void OnOpenPlaylist()
+		{
+			FileChooserDialog fChooser = new FileChooserDialog(Catalog.GetString("Open playlist"),
+			                (Gtk.Window)(playlistWidget as Gtk.Widget).Toplevel,
+			                FileChooserAction.Open,
+			                "gtk-cancel",ResponseType.Cancel,
+			                "gtk-open",ResponseType.Accept);
+			fChooser.SetCurrentFolder(Config.PlayListDir());
+			fChooser.AddFilter(FileFilter);
+			fChooser.DoOverwriteConfirmation = true;
+			if(fChooser.Run() == (int)ResponseType.Accept)
+				Load(fChooser.Filename);
+			fChooser.Destroy();
+		}
+
+		protected virtual void OnNewPlaylist()
+		{
+			FileChooserDialog fChooser = new FileChooserDialog(Catalog.GetString("New playlist"),
+			                (Gtk.Window)(playlistWidget as Gtk.Widget).Toplevel,
+			                FileChooserAction.Save,
+			                "gtk-cancel",ResponseType.Cancel,
+			                "gtk-save",ResponseType.Accept);
+			fChooser.SetCurrentFolder(Config.PlayListDir());
+			fChooser.AddFilter(FileFilter);
+
+			if(fChooser.Run() == (int)ResponseType.Accept)
+				Load(fChooser.Filename);
+			fChooser.Destroy();
+		}
+	}
+}
+
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
new file mode 100644
index 0000000..c63cfdb
--- /dev/null
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -0,0 +1,523 @@
+//
+//  Copyright (C) 2010 Andoni Morales Alastruey
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Gtk;
+using Mono.Unix;
+
+using LongoMatch.Common;
+using LongoMatch.Gui;
+using LongoMatch.Gui.Dialog;
+using LongoMatch.Handlers;
+using LongoMatch.Store;
+using LongoMatch.Store.Templates;
+using LongoMatch.Video;
+using LongoMatch.Video.Utils;
+using LongoMatch.Video.Common;
+using LongoMatch.Multimedia.Utils;
+using LongoMatch.Multimedia.Interfaces;
+
+namespace LongoMatch.Services
+{
+
+
+	public class ProjectsManager
+	{
+		public event OpenedProjectChangedHandler OpenedProjectChanged;
+
+		MainWindow mainWindow;
+		
+		public ProjectsManager(MainWindow mainWindow) {
+			this.mainWindow = mainWindow;
+			Player = mainWindow.Player;
+			Capturer = mainWindow.Capturer;
+			ConnectSignals();
+		}
+
+		public void ConnectSignals() {
+			mainWindow.NewProjectEvent += NewProject;
+			mainWindow.OpenProjectEvent += OpenProject;
+			mainWindow.SaveProjectEvent += SaveProject;
+			mainWindow.ImportProjectEvent += ImportProject;
+			mainWindow.ExportProjectEvent += ExportProject;
+			mainWindow.ManageProjectsEvent += OpenProjectsManager;
+			mainWindow.ManageCategoriesEvent += OpenCategoriesTemplatesManager;
+			mainWindow.ManageTeamsEvent += OpenTeamsTemplatesManager;
+		}
+		
+		public Project OpenedProject {
+			set;
+			get;
+		}
+		
+		public ProjectType OpenedProjectType {
+			set;
+			get;
+		}
+		
+		public CapturerBin Capturer {
+			set;
+			get;
+		}
+		
+		public PlayerBin Player {
+			get;
+			set;
+		}
+		
+		private void EmitProjectChanged() {
+			if (OpenedProjectChanged != null)
+				OpenedProjectChanged(OpenedProject, OpenedProjectType);
+		}
+		
+		private void SaveCaptureProject(Project project) {
+			MessageDialog md;
+			string filePath = project.Description.File.FilePath;
+
+			Log.Debug ("Saving capture project: " + project);
+			md = new MessageDialog(mainWindow as Gtk.Window, DialogFlags.Modal,
+			                       MessageType.Info, ButtonsType.None,
+			                       Catalog.GetString("Loading newly created project..."));
+			md.Show();
+
+			/* scan the new file to build a new PreviewMediaFile with all the metadata */
+			try {
+				Log.Debug("Reloading saved file: " + filePath);
+				project.Description.File = PreviewMediaFile.DiscoverFile(filePath);
+				Core.DB.AddProject(project);
+			} catch(Exception ex) {
+				Log.Exception(ex);
+				Log.Debug ("Backing up project to file");
+				string projectFile = filePath + "-" + DateTime.Now;
+				projectFile = projectFile.Replace("-", "_").Replace(" ", "_").Replace(":", "_");
+				Project.Export(OpenedProject, projectFile);
+				MessagePopup.PopupMessage(mainWindow, MessageType.Error,
+				                          Catalog.GetString("An error occured saving the project:\n")+ex.Message+ "\n\n"+
+				                          Catalog.GetString("The video file and a backup of the project has been "+
+				                                            "saved. Try to import it later:\n")+
+				                          filePath+"\n"+projectFile);
+			}
+			/* we need to set the opened project to null to avoid calling again CloseOpendProject() */
+			/* FIXME: */
+			//project = null;
+			SetProject(project, ProjectType.FileProject, new CaptureSettings());
+			md.Destroy();
+		}
+	
+		private void SaveFakeLiveProject(Project project) {
+			int response;
+			MessageDialog md;
+			FileFilter filter;
+			FileChooserDialog fChooser;
+			
+			Log.Debug("Saving fake live project " + project);
+			md = new MessageDialog(mainWindow, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok,
+			                       Catalog.GetString("The project will be saved to a file. " +
+			                                         "You can insert it later into the database using the "+
+			                                         "\"Import project\" function once you copied the video file " +
+			                                         "to your computer"));
+			response = md.Run();
+			md.Destroy();
+			if(response == (int)ResponseType.Cancel)
+				return;
+
+			fChooser = new FileChooserDialog(Catalog.GetString("Save Project"),
+			                                 mainWindow, FileChooserAction.Save,
+			                                 "gtk-cancel",ResponseType.Cancel,
+			                                 "gtk-save",ResponseType.Accept);
+			fChooser.SetCurrentFolder(Config.HomeDir());
+			filter = new FileFilter();
+			filter.Name = Constants.PROJECT_NAME;
+			filter.AddPattern("*.lpr");
+			fChooser.AddFilter(filter);
+			if(fChooser.Run() == (int)ResponseType.Accept) {
+				Project.Export(project, fChooser.Filename);
+				MessagePopup.PopupMessage(mainWindow, MessageType.Info,
+				                          Catalog.GetString("Project saved successfully."));
+			}
+			fChooser.Destroy();
+		}
+
+		private void ImportProject() {
+			Project project;
+			bool isFake, exists;
+			int res;
+			string fileName;
+			FileFilter filter;
+			NewProjectDialog npd;
+			FileChooserDialog fChooser;
+
+			Log.Debug("Importing project");
+			/* Show a file chooser dialog to select the file to import */
+			fChooser = new FileChooserDialog(Catalog.GetString("Import Project"),
+			                                 mainWindow,
+			                                 FileChooserAction.Open,
+			                                 "gtk-cancel",ResponseType.Cancel,
+			                                 "gtk-open",ResponseType.Accept);
+			fChooser.SetCurrentFolder(Config.HomeDir());
+			filter = new FileFilter();
+			filter.Name = Constants.PROJECT_NAME;
+			filter.AddPattern("*.lpr");
+			fChooser.AddFilter(filter);
+
+
+			res = fChooser.Run();
+			fileName = fChooser.Filename;
+			fChooser.Destroy();
+			/* return if the user cancelled */
+			if(res != (int)ResponseType.Accept)
+				return;
+
+			/* try to import the project and show a message error is the file
+			 * is not a valid project */
+			try {
+				project = Project.Import(fileName);
+			}
+			catch(Exception ex) {
+				MessagePopup.PopupMessage(mainWindow, MessageType.Error,
+				                          Catalog.GetString("Error importing project:")+
+				                          "\n"+ex.Message);
+				Log.Exception(ex);
+				return;
+			}
+
+			isFake = (project.Description.File.FilePath == Constants.FAKE_PROJECT);
+
+			/* If it's a fake live project prompt for a video file and
+			 * create a new PreviewMediaFile for this project */
+			if(isFake) {
+				Log.Debug ("Importing fake live project");
+				project.Description.File = null;
+				npd = new NewProjectDialog();
+				npd.TransientFor = mainWindow;
+				npd.Use = ProjectType.EditProject;
+				npd.Project = project;
+				int response = npd.Run();
+				while(true) {
+					if(response != (int)ResponseType.Ok) {
+						npd.Destroy();
+						return;
+					} else if(npd.Project == null) {
+						MessagePopup.PopupMessage(mainWindow, MessageType.Info,
+						                          Catalog.GetString("Please, select a video file."));
+						response=npd.Run();
+					} else {
+						project = npd.Project;
+						npd.Destroy();
+						break;
+					}
+				}
+			}
+
+			/* If the project exists ask if we want to overwrite it */
+			if(Core.DB.Exists(project)) {
+				MessageDialog md = new MessageDialog(mainWindow,
+				                                     DialogFlags.Modal,
+				                                     MessageType.Question,
+				                                     Gtk.ButtonsType.YesNo,
+				                                     Catalog.GetString("A project already exists for the file:")+
+				                                     project.Description.File.FilePath+ "\n" +
+				                                     Catalog.GetString("Do you want to overwrite it?"));
+				md.Icon = Gtk.IconTheme.Default.LoadIcon("longomatch", 48, 0);
+				res = md.Run();
+				md.Destroy();
+				if(res != (int)ResponseType.Yes)
+					return;
+				exists = true;
+			} else
+				exists = false;
+
+			if(isFake)
+				CreateThumbnails(project);
+			if(exists)
+				Core.DB.UpdateProject(project);
+			else
+				Core.DB.AddProject(project);
+
+
+			MessagePopup.PopupMessage(mainWindow, MessageType.Info,
+			                          Catalog.GetString("Project successfully imported."));
+		}
+
+		private void CreateNewProject(out Project project, out ProjectType projectType,
+		                             out CaptureSettings captureSettings) {
+			ProjectSelectionDialog psd;
+			NewProjectDialog npd;
+			List<Device> devices = null;
+			int response;
+
+			Log.Debug("Creating new project");
+			/* The out parameters must be set before leaving the method */
+			project = null;
+			projectType = ProjectType.None;
+			captureSettings = new CaptureSettings();
+
+			/* Show the project selection dialog */
+			psd = new ProjectSelectionDialog();
+			psd.TransientFor = mainWindow;
+			response = psd.Run();
+			psd.Destroy();
+			if(response != (int)ResponseType.Ok)
+				return;
+			projectType = psd.ProjectType;
+			
+			if(projectType == ProjectType.CaptureProject) {
+				devices = VideoDevice.ListVideoDevices();
+				if(devices.Count == 0) {
+					MessagePopup.PopupMessage(mainWindow, MessageType.Error,
+					                          Catalog.GetString("No capture devices were found."));
+					return;
+				}
+			}
+
+			/* Show the new project dialog and wait to get a valid project
+			 * or quit if the user cancel it.*/
+			npd = new NewProjectDialog();
+			npd.TransientFor = mainWindow;
+			npd.Use = projectType;
+			npd.TemplatesService = Core.TemplatesService;
+			if(projectType == ProjectType.CaptureProject)
+				npd.Devices = devices;
+			response = npd.Run();
+			
+			while(true) {
+				/* User cancelled: quit */
+				if(response != (int)ResponseType.Ok) {
+					npd.Destroy();
+					return;
+				}
+				/* No file chosen: display the dialog again */
+				if(npd.Project == null)
+					MessagePopup.PopupMessage(mainWindow, MessageType.Info,
+					                          Catalog.GetString("Please, select a video file."));
+				/* If a project with the same file path exists show a warning */
+				else if(Core.DB.Exists(npd.Project))
+					MessagePopup.PopupMessage(mainWindow, MessageType.Error,
+					                          Catalog.GetString("This file is already used in another Project.")+"\n"+
+					                          Catalog.GetString("Select a different one to continue."));
+
+				else {
+					/* We are now ready to create the new project */
+					project = npd.Project;
+					if(projectType == ProjectType.CaptureProject)
+						captureSettings = npd.CaptureSettings;
+					npd.Destroy();
+					break;
+				}
+				response = npd.Run();
+			}
+			if(projectType == ProjectType.FileProject)
+				/* We can safelly add the project since we already checked if
+				 * it can can added */
+				Core.DB.AddProject(project);
+		}
+		
+		private bool SetProject(Project project, ProjectType projectType, CaptureSettings props)
+		{
+			if(OpenedProject != null)
+				CloseOpenedProject(true);
+
+			if(projectType == ProjectType.FileProject) {
+				// Check if the file associated to the project exists
+				if(!File.Exists(project.Description.File.FilePath)) {
+					MessagePopup.PopupMessage(mainWindow, MessageType.Warning,
+					                          Catalog.GetString("The file associated to this project doesn't exist.") + "\n"
+					                          + Catalog.GetString("If the location of the file has changed try to edit it with the database manager."));
+					CloseOpenedProject(true);
+					return false;
+				}
+				try {
+					Player.Open(project.Description.File.FilePath);
+				}
+				catch(GLib.GException ex) {
+					MessagePopup.PopupMessage(mainWindow, MessageType.Error,
+					                          Catalog.GetString("An error occurred opening this project:") + "\n" + ex.Message);
+					CloseOpenedProject(true);
+					return false;
+				}
+
+			} else {
+				if(projectType == ProjectType.CaptureProject) {
+					Capturer.CaptureProperties = props;
+					try {
+						Capturer.Type = CapturerType.Live;
+					} catch(Exception ex) {
+						MessagePopup.PopupMessage(mainWindow, MessageType.Error, ex.Message);
+						CloseOpenedProject(false);
+						return false;
+					}
+				} else
+					Capturer.Type = CapturerType.Fake;
+				Capturer.Run();
+			}
+
+			OpenedProject = project;
+			OpenedProjectType = projectType;
+			mainWindow.SetProject(project, projectType, props);
+			EmitProjectChanged();
+			return true;
+		}
+	
+		/*
+		public static void ExportToCSV(Project project) {
+			FileChooserDialog fChooser;
+			FileFilter filter;
+			string outputFile;
+			CSVExport export;
+
+			fChooser = new FileChooserDialog(Catalog.GetString("Select Export File"),
+			                                 window,
+			                                 FileChooserAction.Save,
+			                                 "gtk-cancel",ResponseType.Cancel,
+			                                 "gtk-save",ResponseType.Accept);
+			fChooser.SetCurrentFolder(MainClass.HomeDir());
+			fChooser.DoOverwriteConfirmation = true;
+			filter = new FileFilter();
+			filter.Name = "CSV File";
+			filter.AddPattern("*.csv");
+			fChooser.AddFilter(filter);
+			if(fChooser.Run() == (int)ResponseType.Accept) {
+				outputFile=fChooser.Filename;
+				outputFile = System.IO.Path.ChangeExtension(outputFile,"csv");
+				export = new CSVExport(project, outputFile);
+				export.WriteToFile();
+			}
+			fChooser.Destroy();
+		}*/
+
+		private void CreateThumbnails(Project project) {
+			MultimediaFactory factory;
+			IFramesCapturer capturer;
+			BusyDialog dialog;
+
+			dialog = new BusyDialog();
+			dialog.TransientFor = mainWindow;
+			dialog.Message = Catalog.GetString("Creating video thumbnails. This can take a while.");
+			dialog.Show();
+			dialog.Pulse();
+
+			/* Create all the thumbnails */
+			factory = new MultimediaFactory();
+			capturer = factory.getFramesCapturer();
+			capturer.Open(project.Description.File.FilePath);
+			foreach(Play play in project.AllPlays()) {
+				try {
+					capturer.SeekTime(play.Start.MSeconds + ((play.Stop - play.Start).MSeconds/2),
+					                  true);
+					play.Miniature = capturer.GetCurrentFrame(Constants.THUMBNAIL_MAX_WIDTH,
+					                 Constants.THUMBNAIL_MAX_HEIGHT);
+					dialog.Pulse();
+
+				} catch (Exception ex) {
+					Log.Exception(ex);
+				}
+			}
+			capturer.Dispose();
+			dialog.Destroy();
+		}
+		
+		private void CloseOpenedProject(bool save) {
+			if (save)
+				SaveProject(OpenedProject, OpenedProjectType);
+			
+			if(OpenedProjectType != ProjectType.FileProject)
+				Capturer.Close();
+			else
+				Player.Close();
+
+			if(OpenedProject != null)
+				OpenedProject.Clear();
+			OpenedProject = null;
+			OpenedProjectType = ProjectType.None;
+			EmitProjectChanged();
+		}
+		
+		protected virtual void SaveProject(Project project, ProjectType projectType) {
+			Log.Debug(String.Format("Saving project {0} type: {1}", project, projectType));
+			if (project == null)
+				return;
+			
+			if(projectType == ProjectType.FileProject) {
+				try {
+					Core.DB.UpdateProject(project);
+				} catch(Exception e) {
+					Log.Exception(e);
+				}
+			} else if (projectType == ProjectType.FakeCaptureProject) {
+				SaveFakeLiveProject(project);
+			} else if (projectType == ProjectType.CaptureProject) {
+				SaveCaptureProject(project);
+			}
+		}
+		
+		protected virtual void NewProject() {
+			Project project;
+			ProjectType projectType;
+			CaptureSettings captureSettings;
+			
+			CreateNewProject(out project, out projectType, out captureSettings);
+			if(project != null)
+				SetProject(project, projectType, captureSettings);
+		}
+		
+		protected void OpenProject() {
+			ProjectDescription project=null;
+			OpenProjectDialog opd = new OpenProjectDialog();
+			
+			opd.Fill(Core.DB.GetAllProjects());	
+			opd.TransientFor = mainWindow;
+			if(opd.Run() == (int)ResponseType.Ok)
+				project = opd.SelectedProject;
+			opd.Destroy();
+			if(project != null)
+				SetProject(Core.DB.GetProject(project.UUID), ProjectType.FileProject, new CaptureSettings());
+		}
+		
+		protected void ExportProject() {
+			/* FIXME:
+			 * ExportToCSV(this, openedProject);
+			 * */
+		}
+		
+		protected void OpenCategoriesTemplatesManager()
+		{
+			var tManager = new TemplatesManager<Categories, Category>(Core.TemplatesService.CategoriesTemplateProvider,
+			                                                          Core.TemplatesService.GetTemplateEditor<Categories, Category>());
+			tManager.TransientFor = mainWindow;
+			tManager.Show();
+		}
+
+		protected void OpenTeamsTemplatesManager()
+		{
+			var tManager = new TemplatesManager<TeamTemplate, Player>(Core.TemplatesService.TeamTemplateProvider,
+			                                                          Core.TemplatesService.GetTemplateEditor<TeamTemplate, Player>());
+			tManager.TransientFor = mainWindow;
+			tManager.Show();
+		}
+		
+		protected void OpenProjectsManager()
+		{
+			Gui.Dialog.ProjectsManager pm = new Gui.Dialog.ProjectsManager(OpenedProject, Core.DB);
+			pm.TransientFor = mainWindow;
+			pm.Show();
+		}
+
+	}
+}
diff --git a/LongoMatch/Services/JobsManager/RenderingJobsManager.cs b/LongoMatch.Services/Services/RenderingJobsManager.cs
similarity index 83%
rename from LongoMatch/Services/JobsManager/RenderingJobsManager.cs
rename to LongoMatch.Services/Services/RenderingJobsManager.cs
index 3f019b9..d483c95 100644
--- a/LongoMatch/Services/JobsManager/RenderingJobsManager.cs
+++ b/LongoMatch.Services/Services/RenderingJobsManager.cs
@@ -21,15 +21,18 @@ using Gtk;
 using Mono.Unix;
 
 using LongoMatch.Common;
-using LongoMatch.Gui;
+using LongoMatch.Interfaces;
 using LongoMatch.Gui.Component;
-using LongoMatch.Store;
+using LongoMatch.Multimedia.Interfaces;
 using LongoMatch.Video;
+using LongoMatch.Store;
 using LongoMatch.Video.Editor;
+using LongoMatch.Gui;
+using LongoMatch.Gui.Dialog;
 
-namespace LongoMatch.Services.JobsManager
+namespace LongoMatch.Services
 {
-	public class RenderingJobsManager
+	public class RenderingJobsManager: IRenderingJobsManager
 	{
 		/* List of pending jobs */
 		List<Job> jobs, pendingJobs;
@@ -44,9 +47,8 @@ namespace LongoMatch.Services.JobsManager
 			pendingJobs = new List<Job>();
 			factory = new MultimediaFactory();
 			this.stateBar = stateBar;
-			stateBar.Cancel += delegate(object sender, EventArgs e) {
-				CancelCurrentJob();
-			};
+			stateBar.Cancel += (sender, e) => CancelCurrentJob();
+			stateBar.ManageJobs += (sender, e) => ManageJobs();
 		}
 		
 		public TreeStore Model {
@@ -122,6 +124,33 @@ namespace LongoMatch.Services.JobsManager
 			CancelJob(currentJob);
 		}
 		
+		protected void ManageJobs() {
+			RenderingJobsDialog dialog = new RenderingJobsDialog(this);
+			dialog.TransientFor = (stateBar.Toplevel as Gtk.Window);
+			dialog.Run();
+			dialog.Destroy();
+		}
+		
+		public static Job ConfigureRenderingJob (PlayList playlist, Gtk.Widget parent)
+		{
+			VideoEditionProperties vep;
+			Job job = null;
+			int response;
+
+			vep = new VideoEditionProperties();
+			vep.TransientFor = (Gtk.Window)parent.Toplevel;
+			response = vep.Run();
+			while(response == (int)ResponseType.Ok && vep.EncodingSettings.OutputFile == "") {
+				MessagePopup.PopupMessage(parent, MessageType.Warning,
+				                          Catalog.GetString("Please, select a video file."));
+				response=vep.Run();
+			}
+			if(response ==(int)ResponseType.Ok)
+				job = new Job(playlist, vep.EncodingSettings, vep.EnableAudio, vep.TitleOverlay);
+			vep.Destroy();
+			return job;
+		}
+		
 		private void LoadJob(Job job) {
 			foreach(PlayListPlay segment in job.Playlist) {
 				if(segment.Valid)
diff --git a/LongoMatch/Services/TemplatesService.cs b/LongoMatch.Services/Services/TemplatesService.cs
similarity index 96%
rename from LongoMatch/Services/TemplatesService.cs
rename to LongoMatch.Services/Services/TemplatesService.cs
index 1280851..34e21a5 100644
--- a/LongoMatch/Services/TemplatesService.cs
+++ b/LongoMatch.Services/Services/TemplatesService.cs
@@ -31,7 +31,7 @@ using LongoMatch.Store.Templates;
 namespace LongoMatch.Services
 {
 
-	public class TemplatesService
+	public class TemplatesService: ITemplatesService
 	{
 		private Dictionary<Type, ITemplateProvider> dict;
 		private List<PlayerSubCategory> playerSubcatList;
@@ -97,9 +97,9 @@ namespace LongoMatch.Services
 		
 		public ITemplateWidget<T, U> GetTemplateEditor<T, U>() where T: ITemplate<U>{
 			if (typeof(T) == typeof(Categories))
-				return (ITemplateWidget<T, U>) new CategoriesTemplateEditorWidget ();
+				return (ITemplateWidget<T, U>) new CategoriesTemplateEditorWidget (CategoriesTemplateProvider);
 			if (typeof(T) == typeof(TeamTemplate))
-				return (ITemplateWidget<T, U>) new TeamTemplateEditorWidget();
+				return (ITemplateWidget<T, U>) new TeamTemplateEditorWidget(TeamTemplateProvider);
 			return null;
 		}
 		
@@ -136,10 +136,10 @@ namespace LongoMatch.Services
 	
 	public class TemplatesProvider<T, U>: ITemplateProvider<T, U> where T: ITemplate<U>
 	{
-		private readonly string basePath;
-		private readonly string extension;
-		private readonly MethodInfo methodLoad;
-		private readonly MethodInfo methodDefaultTemplate;
+		readonly string basePath;
+		readonly string extension;
+		readonly MethodInfo methodLoad;
+		readonly MethodInfo methodDefaultTemplate;
 		
 		public TemplatesProvider (string basePath, string extension)
 		{
diff --git a/LongoMatch/Handlers/VideoDrawingsManager.cs b/LongoMatch.Services/Services/VideoDrawingsManager.cs
similarity index 93%
rename from LongoMatch/Handlers/VideoDrawingsManager.cs
rename to LongoMatch.Services/Services/VideoDrawingsManager.cs
index 78497d1..87da99b 100644
--- a/LongoMatch/Handlers/VideoDrawingsManager.cs
+++ b/LongoMatch.Services/Services/VideoDrawingsManager.cs
@@ -22,21 +22,19 @@ using Gdk;
 using LongoMatch.Store;
 using LongoMatch.Gui;
 using LongoMatch.Video.Common;
+using LongoMatch.Multimedia.Interfaces;
 
-
-
-
-namespace LongoMatch.Handlers
+namespace LongoMatch.Services
 {
 
 
 	public class VideoDrawingsManager
 	{
-		private PlayerBin player;
-		private uint timeout;
-		private bool inKeyFrame;
-		private bool canStop;
-		private Play loadedPlay;
+		PlayerBin player;
+		uint timeout;
+		bool inKeyFrame;
+		bool canStop;
+		Play loadedPlay;
 
 		public VideoDrawingsManager(PlayerBin player)
 		{
@@ -114,7 +112,7 @@ namespace LongoMatch.Handlers
 		private void ResetPlayerWindow() {
 			player.LogoMode = false;
 			player.DrawingMode = false;
-			player.SetLogo(System.IO.Path.Combine(MainClass.ImagesDir(),"background.png"));
+			player.SetLogo(System.IO.Path.Combine(Config.ImagesDir(),"background.png"));
 		}
 
 		private bool CheckStopTime() {
diff --git a/LongoMatch.mds b/LongoMatch.mds
index cff7f01..65db516 100644
--- a/LongoMatch.mds
+++ b/LongoMatch.mds
@@ -1,7 +1,7 @@
 <Combine fileversion="2.0" description="LongoMatch : The Digital Coach" outputpath="build/bin/" releaseversion="0.9.0" name="LongoMatch">
   <Policies>
     <DotNetNamingPolicy DirectoryNamespaceAssociation="PrefixedHierarchical" ResourceNamePolicy="FileFormatDefault" />
-    <StandardHeader Text="&#xA; Copyright (C) ${Year} ${CopyrightHolder}&#xA;&#xA; This program is free software; you can redistribute it and/or modify&#xA; it under the terms of the GNU General Public License as published by&#xA; the Free Software Foundation; either version 2 of the License, or&#xA; (at your option) any later version.&#xA;&#xA; This program is distributed in the hope that it will be useful,&#xA; but WITHOUT ANY WARRANTY; without even the implied warranty of&#xA; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&#xA; GNU General Public License for more details.&#xA; &#xA; You should have received a copy of the GNU General Public License&#xA; along with this program; if not, write to the Free Software&#xA; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.&#xA;" inheritsSet="Apache2License" />
+    <StandardHeader Text="&#xA; Copyright (C) ${Year} ${CopyrightHolder}&#xA;&#xA; This program is free software; you can redistribute it and/or modify&#xA; it under the terms of the GNU General Public License as published by&#xA; the Free Software Foundation; either version 2 of the License, or&#xA; (at your option) any later version.&#xA;&#xA; This program is distributed in the hope that it will be useful,&#xA; but WITHOUT ANY WARRANTY; without even the implied warranty of&#xA; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&#xA; GNU General Public License for more details.&#xA; &#xA; You should have received a copy of the GNU General Public License&#xA; along with this program; if not, write to the Free Software&#xA; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.&#xA;" IncludeInNewFiles="True" />
     <VersionControlPolicy inheritsSet="Mono" />
     <ChangeLogPolicy UpdateMode="None" inheritsSet="Mono">
       <MessageStyle LineAlign="0" />
@@ -18,28 +18,40 @@
   </Policies>
   <Configurations active="Release">
     <Configuration name="Debug" ctype="CombineConfiguration">
-      <Entry build="True" name="LongoMatch" configuration="Debug" />
+      <Entry build="True" name="LongoMatch.GUI" configuration="Debug" />
       <Entry build="True" name="libcesarplayer" configuration="Debug" />
-      <Entry build="True" name="CesarPlayer" configuration="Debug" />
-      <Entry build="True" name="Translations" configuration="Debug" />
+      <Entry build="True" name="LongoMatch.Core" configuration="Debug" />
+      <Entry build="True" name="LongoMatch" configuration="Debug" />
+      <Entry build="True" name="LongoMatch.Multimedia" configuration="Debug" />
+      <Entry build="True" name="LongoMatch.Services" configuration="Debug" />
+      <Entry build="True" name="LongoMatch.GUI.Multimedia" configuration="Debug" />
     </Configuration>
     <Configuration name="Release" ctype="CombineConfiguration">
-      <Entry build="True" name="LongoMatch" configuration="Release" />
+      <Entry build="True" name="LongoMatch.GUI" configuration="Release" />
       <Entry build="True" name="libcesarplayer" configuration="Release" />
-      <Entry build="True" name="CesarPlayer" configuration="Release" />
-      <Entry build="True" name="Translations" configuration="Release" />
+      <Entry build="True" name="LongoMatch.Core" configuration="Release" />
+      <Entry build="True" name="LongoMatch" configuration="Release" />
+      <Entry build="True" name="LongoMatch.Multimedia" configuration="Release" />
+      <Entry build="True" name="LongoMatch.Services" configuration="Release" />
+      <Entry build="True" name="LongoMatch.GUI.Multimedia" configuration="Release" />
     </Configuration>
   </Configurations>
   <StartMode startupentry="LongoMatch" single="True">
-    <Execute type="None" entry="LongoMatch" />
+    <Execute type="None" entry="LongoMatch.GUI" />
     <Execute type="None" entry="libcesarplayer" />
-    <Execute type="None" entry="CesarPlayer" />
-    <Execute type="None" entry="Translations" />
+    <Execute type="None" entry="LongoMatch.Core" />
+    <Execute type="None" entry="LongoMatch" />
+    <Execute type="None" entry="LongoMatch.Multimedia" />
+    <Execute type="None" entry="LongoMatch.Services" />
+    <Execute type="None" entry="LongoMatch.GUI.Multimedia" />
   </StartMode>
   <Entries>
-    <Entry filename="LongoMatch/LongoMatch.mdp" />
+    <Entry filename="LongoMatch.GUI/LongoMatch.GUI.mdp" />
     <Entry filename="libcesarplayer/liblongomatch.mdp" />
-    <Entry filename="CesarPlayer/CesarPlayer.mdp" />
-    <Entry filename="po/Translations.mdse" />
+    <Entry filename="LongoMatch.Core/LongoMatch.Core.mdp" />
+    <Entry filename="LongoMatch/LongoMatch.mdp" />
+    <Entry filename="LongoMatch.Multimedia/LongoMatch.Multimedia.mdp" />
+    <Entry filename="LongoMatch.Services/LongoMatch.Services.mdp" />
+    <Entry filename="LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp" />
   </Entries>
 </Combine>
\ No newline at end of file
diff --git a/LongoMatch/LongoMatch.mdp b/LongoMatch/LongoMatch.mdp
index 2f858ce..8134139 100644
--- a/LongoMatch/LongoMatch.mdp
+++ b/LongoMatch/LongoMatch.mdp
@@ -1,221 +1,30 @@
-<Project name="LongoMatch" fileversion="2.0" DefaultNamespace="LongoMatch" language="C#" clr-version="Net_2_0" targetFramework="3.5" ctype="DotNetProject">
-  <Deployment.LinuxDeployData />
-  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="../CesarPlayer/Makefile.am" RelativeConfigureInPath="../">
-    <BuildFilesVar Name="FILES" />
-    <DeployFilesVar />
-    <ResourcesVar Name="RESOURCES" />
-    <OthersVar />
-    <GacRefVar Name="REFERENCES" />
-    <AsmRefVar Name="REFERENCES" />
-    <ProjectRefVar Name="REFERENCES" />
-  </MonoDevelop.Autotools.MakefileInfo>
+<Project name="LongoMatch" fileversion="2.0" DefaultNamespace="LongoMatch" language="C#" targetFramework="4.0" ctype="DotNetProject">
   <Configurations active="Release">
     <Configuration name="Debug" ctype="DotNetProjectConfiguration">
-      <Output directory="../bin" assembly="LongoMatch.exe" assemblyKeyFile="/home/andoni/Proyectos/longomatch/LongoMatch/." />
-      <Build debugmode="True" target="WinExe" />
-      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
-      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+      <Output directory="../bin" assembly="LongoMatch" />
+      <Build debugmode="True" target="Exe" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" definesymbols="DEBUG" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
     </Configuration>
     <Configuration name="Release" ctype="DotNetProjectConfiguration">
-      <Output directory="../bin" assembly="LongoMatch.exe" assemblyKeyFile="/home/andoni/Proyectos/LongoMatch/LongoMatch/." />
-      <Build debugmode="True" target="WinExe" />
-      <Execution consolepause="True" runwithwarnings="True" runtime="MsNet" clr-version="Net_2_0" />
-      <CodeGeneration compiler="Mcs" warninglevel="3" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" additionalargs="-win32icon:images/minilogo.ico" ctype="CSharpCompilerParameters" />
+      <Output directory="../bin" assembly="LongoMatch" />
+      <Build debugmode="False" target="Exe" />
+      <Execution consolepause="False" runwithwarnings="True" runtime="MsNet" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="False" unsafecodeallowed="False" generateoverflowchecks="False" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
     </Configuration>
   </Configurations>
   <Contents>
-    <File subtype="Code" name="longomatch.desktop" DeployService.Deploy="True" DeployService.TargetDirectoryId="Linux.DesktopApplications" buildaction="FileCopy" />
     <File subtype="Code" buildaction="Compile" name="AssemblyInfo.cs" />
     <File subtype="Code" buildaction="Compile" name="Main.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Gui" />
-    <File subtype="Code" buildaction="Compile" name="Gui/MainWindow.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Handlers" />
-    <File subtype="Code" buildaction="Compile" name="Handlers/Handlers.cs" />
-    <File subtype="Directory" buildaction="Compile" name="IO" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/longomatch.png" DeployService.RelativeDeployPath="images/longomatch.png" DeployService.TargetDirectoryId="CommonApplicationDataRoot" />
-    <File subtype="Directory" buildaction="Compile" name="images" />
-    <File subtype="Code" name="images/background.png" DeployService.Deploy="True" DeployService.RelativeDeployPath="images/background.png" DeployService.TargetDirectoryId="CommonApplicationDataRoot" buildaction="FileCopy" />
-    <File subtype="Directory" buildaction="Compile" name="Playlist" />
-    <File subtype="Code" buildaction="Compile" name="Playlist/IPlayList.cs" />
-    <File subtype="Code" buildaction="Compile" name="Playlist/PlayList.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Updates" />
-    <File subtype="Code" buildaction="Compile" name="Updates/Updater.cs" />
-    <File subtype="Code" buildaction="Compile" name="Updates/XmlUpdateParser.cs" />
-    <File subtype="Code" buildaction="Compile" name="IO/CSVExport.cs" />
-    <File subtype="Code" buildaction="Compile" name="Handlers/EventsManager.cs" />
-    <File subtype="Code" buildaction="Compile" name="Handlers/HotKeysManager.cs" />
-    <File subtype="Code" buildaction="Nothing" name="images/logo_48x48.png" DeployService.RelativeDeployPath="icons/hicolor/48x48/longomatch.png" DeployService.TargetDirectoryId="CommonApplicationDataRoot" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TransparentDrawingArea.cs" />
-    <File subtype="Code" buildaction="Compile" name="Handlers/DrawingManager.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Gui/Dialog" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EditPlayerDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EditCategoryDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EntryDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/NewProjectDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/OpenProjectDialog.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Gui/Component" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/ProjectDetailsWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/ButtonsWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/DrawingToolBox.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/NotesWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/FramesCaptureProgressDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/HotKeySelectorDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayerProperties.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Gui/TreeView" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayersTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayerPropertiesTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlayListTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/PlaysTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/PlayersSelectionDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/SnapshotsDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/UpdateDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/Win32CalendarDialog.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Gui/Popup" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Popup/CalendarPopup.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Popup/MessagePopup.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TemplateEditorDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayersListTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/ProjectsManager.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayListWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/ProjectListWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TemplatesManager.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TemplatesEditorBase.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/CategoriesTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeLineWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeScale.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/VideoEditionProperties.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TimeReferenceWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoryProperties.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlaysListTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/DrawingWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/DrawingTool.cs" />
-    <File subtype="Code" buildaction="Compile" name="Handlers/VideoDrawingsManager.cs" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/stock_draw-circle-unfilled.png" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/stock_draw-freeform-line.png" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/stock_draw-line-45.png" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/stock_draw-line-ends-with-arrow.png" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/stock_draw-rectangle-unfilled.png" />
-    <File subtype="Code" buildaction="Compile" name="Common/Enums.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/TaggerDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/TagsTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TagsTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/Constants.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/ProjectSelectionDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/EndCaptureDialog.cs" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/camera-video.png" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="images/video.png" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/BusyDialog.cs" />
-    <File subtype="Code" buildaction="EmbedAsResource" name="gtk-gui/gui.stetic" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/generated.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.MainWindow.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/ListTreeViewBase.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoriesScale.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/Cairo.cs" />
-    <File subtype="Code" buildaction="Compile" name="IO/XMLReader.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Store" />
-    <File subtype="Code" buildaction="Compile" name="Store/Project.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/ProjectDescription.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Category.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Drawing.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/HotKey.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/PixbufTimeNode.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Play.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Player.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/PlayListPlay.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Tag.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Time.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/TimeNode.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Templates/TeamTemplate.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/SerializableObject.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/SubCategory.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Templates/SubCategoryTemplate.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/Templates/CategoriesTemplate.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/Log.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/ConsoleCrayon.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Services" />
-    <File subtype="Code" buildaction="Compile" name="Services/TemplatesService.cs" />
-    <File subtype="Code" buildaction="Compile" name="Interfaces/ITemplates.cs" />
-    <File subtype="Code" buildaction="Compile" name="Interfaces/ISubCategory.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/SubCategoriesTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/Cloner.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/ProjectUtils.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/SubCategoryTagsEditor.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/PlayersTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/StringTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/GStreamer.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs" />
-    <File subtype="Code" buildaction="Compile" name="Services/DataBase.cs" />
-    <File subtype="Code" buildaction="Compile" name="Store/TagStore.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TeamTaggerWidget.cs" />
-    <File subtype="Code" buildaction="Compile" name="Interfaces/ITag.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/Images.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoriesTemplateEditor.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/TeamTemplateEditor.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Services/JobsManager" />
-    <File subtype="Code" buildaction="Compile" name="Services/JobsManager/RenderingJobsManager.cs" />
-    <File subtype="Directory" buildaction="Compile" name="Services" />
-    <File subtype="Code" buildaction="Compile" name="Services/JobsManager/Job.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Component/RenderingStateBar.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/TreeView/RenderingJobsTreeView.cs" />
-    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/RenderingJobsDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs" />
-    <File subtype="Code" buildaction="Compile" name="Common/GuiUtils.cs" />
+    <File subtype="Code" name="longomatch.desktop" DeployService.Deploy="True" DeployService.TargetDirectoryId="Linux.DesktopApplications" buildaction="FileCopy" />
   </Contents>
   <References>
-    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
-    <ProjectReference type="Gac" localcopy="True" refto="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-    <ProjectReference type="Gac" localcopy="True" refto="Mono.Cairo, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
-    <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-    <ProjectReference type="Project" localcopy="True" refto="CesarPlayer" />
-    <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-    <ProjectReference type="Gac" localcopy="True" refto="Db4objects.Db4o, Version=7.4.121.14026, Culture=neutral, PublicKeyToken=6199cd4f203aa8eb" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Services" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Core" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Multimedia" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
   </References>
-  <LanguageParameters StartupObject="LongoMatch.MainClass" ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
 </Project>
\ No newline at end of file
diff --git a/LongoMatch/Main.cs b/LongoMatch/Main.cs
index 3599269..47fa170 100644
--- a/LongoMatch/Main.cs
+++ b/LongoMatch/Main.cs
@@ -22,14 +22,12 @@
 using System;
 using System.IO;
 using Gtk;
-using LongoMatch.Common;
-using LongoMatch.DB;
+using Mono.Unix;
+
 using LongoMatch.Gui;
-using LongoMatch.IO;
-using LongoMatch.Store.Templates;
 using LongoMatch.Services;
-using LongoMatch.Services.JobsManager;
-using Mono.Unix;
+using LongoMatch.Common;
+using LongoMatch.Multimedia.Utils;
 
 namespace LongoMatch
 
@@ -37,175 +35,24 @@ namespace LongoMatch
 
 	class MainClass
 	{
-		private static DataBase db;
-		public static TemplatesService ts;
-		private static string baseDirectory;
-		private static string homeDirectory;
-		private static string configDirectory;
-		private const string WIN32_CONFIG_FILE = "longomatch.conf";
-
+		
 		public static void Main(string[] args)
 		{
-			SetupBaseDir();
-
-			Log.Debugging = Debugging;
-			Log.Information("Starting " + Constants.SOFTWARE_NAME);
-
-			//Iniciamos la internalizaciÃn
-			Catalog.Init(Constants.SOFTWARE_NAME.ToLower(),RelativeToPrefix("share/locale"));
-
-			//Iniciamos la aplicaciÃn
-			Application.Init();
-
 			GLib.ExceptionManager.UnhandledException += new GLib.UnhandledExceptionHandler(OnException);
 
 			GStreamer.Init();
-			if (! GStreamer.CheckInstallation())
+			if (!GStreamer.CheckInstallation())
 				return;
 
-			//Comprobamos los archivos de inicio
-			CheckDirs();
-			
-			ts = new TemplatesService(configDirectory);
-
-			//Iniciamos la base de datos
-			db = new DataBase(Path.Combine(DBDir(),Constants.DB_FILE));
-
-			//Check for previous database
-			CheckOldFiles();
-
-			try {
+			//try {
+				Core.Init();
 				MainWindow win = new MainWindow();
 				win.Show();
+				Core.Start(win);
 				Application.Run();
-			} catch(Exception ex) {
-				ProcessExecutionError(ex);
-			}
-		}
-
-		public static string RelativeToPrefix(string relativePath) {
-			return System.IO.Path.Combine(baseDirectory, relativePath);
-		}
-
-		public static string HomeDir() {
-			return homeDirectory;
-		}
-
-		public static string PlayListDir() {
-			return System.IO.Path.Combine(homeDirectory, "playlists");
-		}
-
-		public static string SnapshotsDir() {
-			return System.IO.Path.Combine(homeDirectory, "snapshots");
-		}
-
-		public static string TemplatesDir() {
-			return System.IO.Path.Combine(configDirectory, "templates");
-		}
-
-		public static string VideosDir() {
-			return System.IO.Path.Combine(homeDirectory, "videos");
-		}
-
-		public static string TempVideosDir() {
-			return System.IO.Path.Combine(configDirectory, "temp");
-		}
-
-		public static string ImagesDir() {
-			return RelativeToPrefix("share/longomatch/images");
-		}
-
-		public static string DBDir() {
-			return System.IO.Path.Combine(configDirectory, "db");
-		}
-
-		public static void CheckDirs() {
-			if(!System.IO.Directory.Exists(homeDirectory))
-				System.IO.Directory.CreateDirectory(homeDirectory);
-			if(!System.IO.Directory.Exists(TemplatesDir()))
-				System.IO.Directory.CreateDirectory(TemplatesDir());
-			if(!System.IO.Directory.Exists(SnapshotsDir()))
-				System.IO.Directory.CreateDirectory(SnapshotsDir());
-			if(!System.IO.Directory.Exists(PlayListDir()))
-				System.IO.Directory.CreateDirectory(PlayListDir());
-			if(!System.IO.Directory.Exists(DBDir()))
-				System.IO.Directory.CreateDirectory(DBDir());
-			if(!System.IO.Directory.Exists(VideosDir()))
-				System.IO.Directory.CreateDirectory(VideosDir());
-			if(!System.IO.Directory.Exists(TempVideosDir()))
-				System.IO.Directory.CreateDirectory(TempVideosDir());
-		}
-
-
-		public static void CheckOldFiles() {
-			string oldDBFile= System.IO.Path.Combine(homeDirectory, "db/db.yap");
-			//We supose that if the conversion as already be done successfully,
-			//old DB file has been renamed to db.yap.bak
-			if(File.Exists(oldDBFile)) {
-				MessageDialog md = new MessageDialog(null,
-				                                     DialogFlags.Modal,
-				                                     MessageType.Question,
-				                                     Gtk.ButtonsType.YesNo,
-				                                     Catalog.GetString("Some elements from the previous version (database, templates and/or playlists) have been found.")+"\n"+
-				                                     Catalog.GetString("Do you want to import them?"));
-				md.Icon=Stetic.IconLoader.LoadIcon(md, "longomatch", Gtk.IconSize.Dialog);
-				if(md.Run()==(int)ResponseType.Yes) {
-					md.Destroy();
-					//Migrator migrator = new Migrator(homeDirectory);
-					//migrator.Run();
-					//migrator.Destroy();
-				}
-				else
-					md.Destroy();
-			}
-		}
-
-		public static DataBase DB {
-			get {
-				return db;
-			}
-		}
-		
-		private static void SetupBaseDir() {
-			string home;
-			
-			if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
-				baseDirectory = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"../");
-			}
-			else
-				baseDirectory = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"../../");
-			
-			/* Check for the magic file PORTABLE to check if it's a portable version
-			 * and the config goes in the same folder as the binaries */
-			if (File.Exists(System.IO.Path.Combine(baseDirectory, Constants.PORTABLE_FILE)))
-				home = baseDirectory;
-			else
-				home = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);
-			
-			homeDirectory = System.IO.Path.Combine(home,Constants.SOFTWARE_NAME);
-			if (Environment.OSVersion.Platform == PlatformID.Win32NT)
-				configDirectory = homeDirectory;
-			else
-				configDirectory = System.IO.Path.Combine(home,".longomatch");
-		}
-
-		private static bool? debugging = null;	
-		public static bool Debugging {
-			get {
-				if(debugging == null) {
-					debugging = EnvironmentIsSet("LGM_DEBUG");
-				}
-				return debugging.Value;
-			}
-			set {
-				debugging = value;
-				Log.Debugging = Debugging;
-			}
-		}
-
-		public static bool EnvironmentIsSet(string env)
-		{
-			return !String.IsNullOrEmpty(Environment.GetEnvironmentVariable(env));
+			//} catch(Exception ex) {
+			//	ProcessExecutionError(ex);
+			//}
 		}
 
 		private static void OnException(GLib.UnhandledExceptionArgs args) {
@@ -219,7 +66,7 @@ namespace LongoMatch
 			logFile = logFile.Replace("/","-");
 			logFile = logFile.Replace(" ","-");
 			logFile = logFile.Replace(":","-");
-			logFile = System.IO.Path.Combine(HomeDir(),logFile);
+			logFile = System.IO.Path.Combine(Config.HomeDir(),logFile);
 
 			if(ex.InnerException != null)
 				message = String.Format("{0}\n{1}\n{2}\n{3}\n{4}",ex.Message,ex.InnerException.Message,ex.Source,ex.StackTrace,ex.InnerException.StackTrace);
diff --git a/LongoMatch/Makefile.am b/LongoMatch/Makefile.am
index 621e80c..d6d561f 100644
--- a/LongoMatch/Makefile.am
+++ b/LongoMatch/Makefile.am
@@ -2,177 +2,14 @@ ASSEMBLY = LongoMatch
 TARGET = exe
 LINK = $(REF_DEP_LONGOMATCH)
 
-
 SOURCES = \
 	AssemblyInfo.cs \
-	Common/Cairo.cs \
-	Common/Cloner.cs \
-	Common/ConsoleCrayon.cs \
-	Common/Constants.cs \
-	Common/Enums.cs \
-	Common/GStreamer.cs \
-	Common/GuiUtils.cs \
-	Common/Images.cs \
-	Common/Log.cs \
-	Common/ProjectUtils.cs \
-	Common/SerializableObject.cs \
-	gtk-gui/generated.cs \
-	gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs \
-	gtk-gui/LongoMatch.Gui.Component.DrawingToolBox.cs \
-	gtk-gui/LongoMatch.Gui.Component.DrawingWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs \
-	gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.PlayersTaggerWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.PlaysListTreeWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.RenderingStateBar.cs \
-	gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.TagsTreeWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs \
-	gtk-gui/LongoMatch.Gui.Component.TemplatesEditorBase.cs \
-	gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.HotKeySelectorDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.NewProjectDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.OpenProjectDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.PlayersSelectionDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.ProjectSelectionDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.ProjectsManager.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.RenderingJobsDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.SnapshotsDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.SubCategoryTagsEditor.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.TaggerDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.TemplateEditorDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.TemplatesManager.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.UpdateDialog.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs \
-	gtk-gui/LongoMatch.Gui.Dialog.Win32CalendarDialog.cs \
-	gtk-gui/LongoMatch.Gui.MainWindow.cs \
-	gtk-gui/LongoMatch.Gui.Popup.CalendarPopup.cs \
-	gtk-gui/LongoMatch.Gui.Popup.TransparentDrawingArea.cs \
-	Gui/Component/ButtonsWidget.cs \
-	Gui/Component/CategoriesScale.cs \
-	Gui/Component/CategoriesTemplateEditor.cs \
-	Gui/Component/CategoryProperties.cs \
-	Gui/Component/DrawingToolBox.cs \
-	Gui/Component/DrawingWidget.cs \
-	Gui/Component/NotesWidget.cs \
-	Gui/Component/RenderingStateBar.cs \
-	Gui/Component/PlayerProperties.cs \
-	Gui/Component/PlayersListTreeWidget.cs \
-	Gui/Component/PlayersTaggerWidget.cs \
-	Gui/Component/PlayListWidget.cs \
-	Gui/Component/PlaysListTreeWidget.cs \
-	Gui/Component/ProjectDetailsWidget.cs \
-	Gui/Component/ProjectListWidget.cs \
-	Gui/Component/StringTaggerWidget.cs \
-	Gui/Component/TaggerWidget.cs \
-	Gui/Component/TagsTreeWidget.cs \
-	Gui/Component/TeamTaggerWidget.cs \
-	Gui/Component/TeamTemplateEditor.cs \
-	Gui/Component/TemplatesEditorBase.cs \
-	Gui/Component/TimeLineWidget.cs \
-	Gui/Component/TimeReferenceWidget.cs \
-	Gui/Component/TimeScale.cs \
-	Gui/Dialog/BusyDialog.cs \
-	Gui/Dialog/DrawingTool.cs \
-	Gui/Dialog/EditCategoryDialog.cs \
-	Gui/Dialog/EditPlayerDialog.cs \
-	Gui/Dialog/EndCaptureDialog.cs \
-	Gui/Dialog/EntryDialog.cs \
-	Gui/Dialog/FramesCaptureProgressDialog.cs \
-	Gui/Dialog/HotKeySelectorDialog.cs \
-	Gui/Dialog/NewProjectDialog.cs \
-	Gui/Dialog/OpenProjectDialog.cs \
-	Gui/Dialog/PlayersSelectionDialog.cs \
-	Gui/Dialog/ProjectSelectionDialog.cs \
-	Gui/Dialog/ProjectsManager.cs \
-	Gui/Dialog/RenderingJobsDialog.cs \
-	Gui/Dialog/SnapshotsDialog.cs \
-	Gui/Dialog/SubCategoryTagsEditor.cs \
-	Gui/Dialog/TaggerDialog.cs \
-	Gui/Dialog/TemplateEditorDialog.cs \
-	Gui/Dialog/TemplatesManager.cs \
-	Gui/Dialog/UpdateDialog.cs \
-	Gui/Dialog/VideoEditionProperties.cs \
-	Gui/Dialog/Win32CalendarDialog.cs \
-	Gui/MainWindow.cs \
-	Gui/Popup/CalendarPopup.cs \
-	Gui/Popup/MessagePopup.cs \
-	Gui/TransparentDrawingArea.cs \
-	Gui/TreeView/CategoriesTreeView.cs \
-	Gui/TreeView/ListTreeViewBase.cs \
-	Gui/TreeView/PlayerPropertiesTreeView.cs \
-	Gui/TreeView/PlayersTreeView.cs \
-	Gui/TreeView/PlayListTreeView.cs \
-	Gui/TreeView/PlaysTreeView.cs \
-	Gui/TreeView/RenderingJobsTreeView.cs \
-	Gui/TreeView/SubCategoriesTreeView.cs \
-	Gui/TreeView/TagsTreeView.cs \
-	Handlers/DrawingManager.cs \
-	Handlers/EventsManager.cs \
-	Handlers/Handlers.cs \
-	Handlers/HotKeysManager.cs \
-	Handlers/VideoDrawingsManager.cs \
-	Interfaces/ISubCategory.cs \
-	Interfaces/ITag.cs \
-	Interfaces/ITemplates.cs \
-	IO/CSVExport.cs \
-	IO/XMLReader.cs \
-	Main.cs \
-	Playlist/IPlayList.cs \
-	Playlist/PlayList.cs \
-	Services/DataBase.cs \
-	Services/JobsManager/Job.cs \
-	Services/JobsManager/RenderingJobsManager.cs \
-	Services/TemplatesService.cs \
-	Store/Category.cs \
-	Store/Drawing.cs \
-	Store/HotKey.cs \
-	Store/PixbufTimeNode.cs \
-	Store/Play.cs \
-	Store/Player.cs \
-	Store/PlayListPlay.cs \
-	Store/Project.cs \
-	Store/ProjectDescription.cs \
-	Store/SubCategory.cs \
-	Store/Tag.cs \
-	Store/TagStore.cs \
-	Store/Templates/CategoriesTemplate.cs \
-	Store/Templates/SubCategoryTemplate.cs \
-	Store/Templates/TeamTemplate.cs \
-	Store/Templates/Template.cs \
-	Store/Time.cs \
-	Store/TimeNode.cs \
-	Updates/Updater.cs \
-	Updates/XmlUpdateParser.cs
-
-IMAGES = images/longomatch.png \
-         images/background.png
+	Main.cs
 
-LOGO = images/logo_48x48.png
+IMAGES = $(top_srcdir)/images/longomatch.png \
+         $(top_srcdir)/images/background.png
 
-RESOURCES = \
-	gtk-gui/gui.stetic\
-	images/longomatch.png\
-	images/stock_draw-line-45.png\
-	images/stock_draw-circle-unfilled.png\
-	images/stock_draw-line-ends-with-arrow.png\
-	images/stock_draw-rectangle-unfilled.png\
-	images/stock_draw-freeform-line.png\
-	images/camera-video.png\
-	images/video.png 
+LOGO = $(top_srcdir)/images/logo_48x48.png
 
 bin_SCRIPTS = longomatch
 
diff --git a/Makefile.am b/Makefile.am
index 181b7ee..6768733 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,16 @@ EXTRA_DIST =\
 		expansions.m4 \
 		env.in
 
-SUBDIRS = build libcesarplayer CesarPlayer LongoMatch po
+SUBDIRS = \
+	build \
+	libcesarplayer \
+	LongoMatch.Core \
+	LongoMatch.Multimedia \
+	LongoMatch.GUI.Multimedia \
+	LongoMatch.GUI \
+	LongoMatch.Services \
+	LongoMatch \
+	po
 
 DISTCLEANFILES = 	intltool-extract\
 			intltool-merge\
diff --git a/build/build.environment.mk b/build/build.environment.mk
index 89a1386..ea84591 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -14,11 +14,51 @@ LINK_GLIB = $(GLIBSHARP_LIBS)
 LINK_GTK = $(GTKSHARP_LIBS)
 LINK_GCONF = $(GCONFSHARP_LIBS)
 LINK_DB40 = $(DB4O_LIBS)
-LINK_CESARPLAYER = -r:$(DIR_BIN)/CesarPlayer.dll
+LINK_LONGOMATCH_CORE = -r:$(DIR_BIN)/LongoMatch.Core.dll
+LINK_LONGOMATCH_MULTIMEDIA = -r:$(DIR_BIN)/LongoMatch.Multimedia.dll
+LINK_LONGOMATCH_GUI_MULTIMEDIA = -r:$(DIR_BIN)/LongoMatch.GUI.Multimedia.dll
+LINK_LONGOMATCH_GUI = -r:$(DIR_BIN)/LongoMatch.GUI.dll
+LINK_LONGOMATCH_SERVICES = -r:$(DIR_BIN)/LongoMatch.Services.dll
 
-REF_DEP_CESARPLAYER = $(LINK_GLIB) \
-                      $(LINK_GTK) \
-                      $(LINK_MONO_POSIX)
+REF_DEP_LONGOMATCH_CORE = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_CAIRO)
+
+REF_DEP_LONGOMATCH_MULTIMEDIA = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_LONGOMATCH_CORE)
+
+REF_DEP_LONGOMATCH_GUI_MULTIMEDIA = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_CAIRO) \
+                     $(LINK_LONGOMATCH_CORE) \
+                     $(LINK_LONGOMATCH_MULTIMEDIA)
+
+REF_DEP_LONGOMATCH_GUI = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_CAIRO) \
+                     $(LINK_LONGOMATCH_CORE) \
+                     $(LINK_LONGOMATCH_MULTIMEDIA) \
+                     $(LINK_LONGOMATCH_GUI_MULTIMEDIA)
+
+REF_DEP_LONGOMATCH_SERVICES = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_DB40) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_CAIRO) \
+                     $(LINK_LONGOMATCH_CORE) \
+                     $(LINK_LONGOMATCH_MULTIMEDIA) \
+                     $(LINK_LONGOMATCH_GUI) \
+                     $(LINK_LONGOMATCH_GUI_MULTIMEDIA)
 
 REF_DEP_LONGOMATCH = \
                      $(LINK_MONO_POSIX) \
@@ -26,7 +66,11 @@ REF_DEP_LONGOMATCH = \
                      $(LINK_GLIB) \
                      $(LINK_GTK) \
                      $(LINK_CAIRO) \
-                     $(LINK_CESARPLAYER)
+                     $(LINK_LONGOMATCH_CORE) \
+                     $(LINK_LONGOMATCH_MULTIMEDIA) \
+                     $(LINK_LONGOMATCH_SERVICES) \
+                     $(LINK_LONGOMATCH_GUI)
+
 
 DIR_BIN = $(top_builddir)/bin
 
diff --git a/configure.ac b/configure.ac
index aa3cf20..cd269ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl Warning: This is an automatically generated file, do not edit!
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ([2.54])
-AC_INIT([LongoMatch], [0.17.1])
+AC_INIT([LongoMatch], [0.17.2])
 AM_INIT_AUTOMAKE([foreign])
 AM_MAINTAINER_MODE
 
@@ -98,11 +98,11 @@ build/m4/shave/shave-libtool
 
 libcesarplayer/Makefile
 
-CesarPlayer/Makefile
-CesarPlayer/cesarplayer.pc
-CesarPlayer/CesarPlayer.dll.config
-CesarPlayer/AssemblyInfo.cs
-
+LongoMatch.Core/Makefile
+LongoMatch.Multimedia/Makefile
+LongoMatch.GUI.Multimedia/Makefile
+LongoMatch.GUI/Makefile
+LongoMatch.Services/Makefile
 LongoMatch/Makefile
 LongoMatch/longomatch
 LongoMatch/longomatch.desktop.in
diff --git a/LongoMatch/images/background.png b/images/background.png
similarity index 100%
rename from LongoMatch/images/background.png
rename to images/background.png
diff --git a/LongoMatch/images/background.svg b/images/background.svg
similarity index 100%
rename from LongoMatch/images/background.svg
rename to images/background.svg
diff --git a/LongoMatch/images/camera-video.png b/images/camera-video.png
similarity index 100%
rename from LongoMatch/images/camera-video.png
rename to images/camera-video.png
diff --git a/LongoMatch/images/logo.svg b/images/logo.svg
similarity index 100%
rename from LongoMatch/images/logo.svg
rename to images/logo.svg
diff --git a/LongoMatch/images/logo_48x48.png b/images/logo_48x48.png
similarity index 100%
rename from LongoMatch/images/logo_48x48.png
rename to images/logo_48x48.png
diff --git a/LongoMatch/images/longomatch.png b/images/longomatch.png
similarity index 100%
rename from LongoMatch/images/longomatch.png
rename to images/longomatch.png
diff --git a/LongoMatch/images/minilogo.ico b/images/minilogo.ico
similarity index 100%
rename from LongoMatch/images/minilogo.ico
rename to images/minilogo.ico
diff --git a/LongoMatch/images/minilogo.png b/images/minilogo.png
similarity index 100%
rename from LongoMatch/images/minilogo.png
rename to images/minilogo.png
diff --git a/LongoMatch/images/minilogo.rc b/images/minilogo.rc
similarity index 100%
rename from LongoMatch/images/minilogo.rc
rename to images/minilogo.rc
diff --git a/LongoMatch/images/resource.h b/images/resource.h
similarity index 100%
rename from LongoMatch/images/resource.h
rename to images/resource.h
diff --git a/LongoMatch/images/stock_draw-circle-unfilled.png b/images/stock_draw-circle-unfilled.png
similarity index 100%
rename from LongoMatch/images/stock_draw-circle-unfilled.png
rename to images/stock_draw-circle-unfilled.png
diff --git a/LongoMatch/images/stock_draw-freeform-line.png b/images/stock_draw-freeform-line.png
similarity index 100%
rename from LongoMatch/images/stock_draw-freeform-line.png
rename to images/stock_draw-freeform-line.png
diff --git a/LongoMatch/images/stock_draw-line-45.png b/images/stock_draw-line-45.png
similarity index 100%
rename from LongoMatch/images/stock_draw-line-45.png
rename to images/stock_draw-line-45.png
diff --git a/LongoMatch/images/stock_draw-line-ends-with-arrow.png b/images/stock_draw-line-ends-with-arrow.png
similarity index 100%
rename from LongoMatch/images/stock_draw-line-ends-with-arrow.png
rename to images/stock_draw-line-ends-with-arrow.png
diff --git a/LongoMatch/images/stock_draw-rectangle-unfilled.png b/images/stock_draw-rectangle-unfilled.png
similarity index 100%
rename from LongoMatch/images/stock_draw-rectangle-unfilled.png
rename to images/stock_draw-rectangle-unfilled.png
diff --git a/LongoMatch/images/video.png b/images/video.png
similarity index 100%
rename from LongoMatch/images/video.png
rename to images/video.png
diff --git a/libcesarplayer/liblongomatch.mdp b/libcesarplayer/liblongomatch.mdp
index 2338b21..3349a84 100644
--- a/libcesarplayer/liblongomatch.mdp
+++ b/libcesarplayer/liblongomatch.mdp
@@ -1,16 +1,7 @@
 <Project name="libcesarplayer" fileversion="2.0" language="C" Target="Bin" Description="Gstreamer backend libraries for LongoMatch" ctype="CProject">
-  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" IsAutotoolsProject="True" RelativeConfigureInPath=".">
-    <BuildFilesVar />
-    <DeployFilesVar />
-    <ResourcesVar />
-    <OthersVar />
-    <GacRefVar />
-    <AsmRefVar />
-    <ProjectRefVar />
-  </MonoDevelop.Autotools.MakefileInfo>
   <Configurations active="Release">
     <Configuration name="Debug" SourceDirectory="." ctype="CProjectConfiguration">
-      <Output directory="../LongoMatch/bin/Debug" output="libcesarplayer.dll" />
+      <Output directory="../bin" output="libcesarplayer.dll" />
       <Build debugmode="True" target="SharedLibrary" />
       <Execution consolepause="True" runwithwarnings="True" />
       <CodeGeneration WarningLevel="Normal" WarningsAsErrors="False" OptimizationLevel="0" ExtraCompilerArguments="" ExtraLinkerArguments="" DefineSymbols="DEBUG MONODEVELOP" ctype="CCompilationParameters" />
@@ -45,6 +36,15 @@
     <File subtype="Code" buildaction="Compile" name="baconvideowidget-marshal.c" />
     <File subtype="Code" buildaction="Nothing" name="baconvideowidget-marshal.h" />
   </Contents>
+  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" IsAutotoolsProject="True" RelativeConfigureInPath=".">
+    <BuildFilesVar />
+    <DeployFilesVar />
+    <ResourcesVar />
+    <OthersVar />
+    <GacRefVar />
+    <AsmRefVar />
+    <ProjectRefVar />
+  </MonoDevelop.Autotools.MakefileInfo>
   <Packages>
     <Package file="/usr/lib/pkgconfig/gdk-2.0.pc" name="GDK" IsProject="False" />
     <Package file="/usr/lib/pkgconfig/gstreamer-0.10.pc" name="GStreamer" IsProject="False" />
diff --git a/libcesarplayer/video-utils.c b/libcesarplayer/video-utils.c
index ef8d619..9053db8 100644
--- a/libcesarplayer/video-utils.c
+++ b/libcesarplayer/video-utils.c
@@ -5,6 +5,7 @@
 #include <glib/gi18n.h>
 #include <libintl.h>
 
+#include <gst/gst.h>
 #include <gdk/gdk.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -234,3 +235,9 @@ totem_ratio_fits_screen (GdkWindow * video_window, int video_width,
 
   return TRUE;
 }
+
+void
+init_backend (int argc, char **argv)
+{
+  gst_init(&argc, &argv);
+}
diff --git a/libcesarplayer/video-utils.h b/libcesarplayer/video-utils.h
index db17113..0fc074c 100644
--- a/libcesarplayer/video-utils.h
+++ b/libcesarplayer/video-utils.h
@@ -2,6 +2,12 @@
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
+#ifdef WIN32
+#define EXPORT __declspec (dllexport)
+#else
+#define EXPORT
+#endif
+
 #define TOTEM_OBJECT_HAS_SIGNAL(obj, name) (g_signal_lookup (name, g_type_from_name (G_OBJECT_TYPE_NAME (obj))) != 0)
 
 void totem_gdk_window_set_invisible_cursor (GdkWindow * window);
@@ -17,3 +23,5 @@ void totem_widget_set_preferred_size (GtkWidget * widget, gint width,
     gint height);
 gboolean totem_ratio_fits_screen (GdkWindow * window, int video_width,
     int video_height, gfloat ratio);
+
+EXPORT void init_backend (int argc, char **argv);
diff --git a/po/Translations.mdse b/po/Translations.mdse
index 841ddda..02571ff 100644
--- a/po/Translations.mdse
+++ b/po/Translations.mdse
@@ -3,11 +3,11 @@
     <Configuration name="Release" ctype="TranslationProjectConfiguration" />
     <Configuration name="Debug" ctype="TranslationProjectConfiguration" />
   </Configurations>
-  <projectInformations>
-    <TranslationProjectInformation projectName="libcesarplayer" isIncluded="False" />
-  </projectInformations>
   <translations>
     <Translation isoCode="es" />
     <Translation isoCode="fr" />
   </translations>
+  <projectInformations>
+    <TranslationProjectInformation projectName="libcesarplayer" isIncluded="False" />
+  </projectInformations>
 </CombineEntry>
\ No newline at end of file
diff --git a/tools/deb-pkg.sh b/tools/deb-pkg.sh
index 5128cb1..fbf87e1 100755
--- a/tools/deb-pkg.sh
+++ b/tools/deb-pkg.sh
@@ -38,6 +38,6 @@ echo "Create changelog dch --create --empty -v $PKG_VERSION~$DEB_RELEASE  --pack
 dch --create -v $PKG_VERSION~$DEB_RELEASE  --package $PKG_NAME --distribution $DIST
 dpkg-buildpackage -S
 cd $BUILD_DIR
-dput my-ppa $PKG_NAME\_$PKG_VERSION~$DEB_RELEASE\_source.changes
+dput ppa:ylatuya/longomatch-dev $PKG_NAME\_$PKG_VERSION~$DEB_RELEASE\_source.changes
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]