diff --git a/.gitignore b/.gitignore
index e69de29..567609b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+build/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..b29a074
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,87 @@
+ # project name
+ project (com.github.bgeVam.pycastr)
+
+ # the oldest stable cmake version we support
+ cmake_minimum_required (VERSION 2.6)
+
+ # tell cmake where its modules can be found in our project directory
+ list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+ list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/src)
+
+ # where we install data directory (if we have any)
+ set (DATADIR "${CMAKE_INSTALL_PREFIX}/share")
+
+ # what to call that directory where we install data too
+ set (PKGDATADIR "${DATADIR}/com.github.bgeVam.pycastr")
+
+ set (EXEC_NAME "com.github.bgeVam.pycastr")
+ set (RELEASE_NAME "pycastr")
+ set (VERSION "0.1")
+ set (VERSION_INFO "alpha")
+
+ # we're about to use pkgconfig to make sure dependencies are installed so let's find pkgconfig first
+ find_package(PkgConfig)
+
+ # now let's actually check for the required dependencies
+ #pkg_check_modules(DEPS REQUIRED )
+ pkg_check_modules(DEPS REQUIRED
+ gtk+-3.0
+ gee-0.8
+ appindicator3-0.1
+ libnotify
+ python3
+ )
+
+ add_definitions(${DEPS_CFLAGS})
+ link_libraries(${DEPS_LIBRARIES})
+ link_directories(${DEPS_LIBRARY_DIRS})
+
+ # make sure we have vala
+ find_package(Vala REQUIRED)
+ # make sure we use vala
+ include(ValaVersion)
+ # make sure it's the desired version of vala
+ ensure_vala_version("0.22.0" MINIMUM)
+
+ # files we want to compile
+ include(ValaPrecompile)
+ vala_precompile(VALA_C ${EXEC_NAME}
+ src/pycastr-gtk/Client.vala
+ src/pycastr-gtk/ClientService.vala
+ src/pycastr-gtk/PycastrGtk.vala
+ src/pycastr-gtk/PycastrIndicator.vala
+
+ # tell what libraries to use when compiling
+ PACKAGES
+ gtk+-3.0
+ gee-0.8
+ appindicator3-0.1
+ libnotify
+ )
+
+ # tell cmake what to call the executable we just made
+ add_executable(${EXEC_NAME} ${VALA_C})
+
+ # install the python dependencies
+ file(MAKE_DIRECTORY /tmp/pycastr)
+ file(COPY src/pycastr.py DESTINATION /tmp/pycastr/src)
+ # TODO add python-pip3 as requirement
+ install(CODE "execute_process (COMMAND pip3 install netdisco)")
+ install(CODE "execute_process (COMMAND pip3 install kodi-json)")
+
+ # install icons and update cache
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/icons/pycastr-status-on.svg DESTINATION ${DATADIR}/icons/hicolor/24x24/apps/)
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/icons/pycastr-status-off.svg DESTINATION ${DATADIR}/icons/hicolor/24x24/apps/)
+ install(CODE "execute_process(COMMAND gtk-update-icon-cache -f -q -t ${DATADIR}/icons/hicolor ERROR_QUIET)")
+
+ # install the binaries we just made
+ install (TARGETS ${EXEC_NAME} RUNTIME DESTINATION bin)
+
+ # install our .desktop file so the Applications menu will see it
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/com.github.bgeVam.pycastr.desktop DESTINATION ${DATADIR}/applications/)
+
+ # install our .appdata.xml file so AppCenter will see it
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/com.github.bgeVam.pycastr.appdata.xml DESTINATION ${DATADIR}/metainfo/)
+
+ # add our .desktop file to the autostart
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/com.github.bgeVam.pycastr.desktop DESTINATION ~/.config/autostart/)
diff --git a/README.md b/README.md
index 499ca41..f96214e 100644
--- a/README.md
+++ b/README.md
@@ -25,32 +25,40 @@ NOTE: Two dummy clients are added as examples in pycastr.py. Sometimes client di
The original icons used by pycastr may be found in [Google's material design icon repository](https://github.com/google/material-design-icons "material design icons repository").
-## Install
+## Compile and Install
-**Requirements**
+**Install with Cmake**
-* vlc
-* python
-* [python-kodijson](https://github.com/jcsaaddupuy/python-kodijson)
+For advanced instructions please take a look at [the elementary os developer guidelines](https://elementary.io/en/docs/code/getting-started#building-and-installing-with-cmake).
-Just run install.sh as super user
+Please start with cloning or downloading the repository.
+
+1. Create a build directory
```
-sudo ./install.sh
+mkdir build
```
-## Uninstall
-
-Just run uninstall.sh as super user
+2. Change to build directory
```
-sudo ./uninstall.sh
+cd build/
```
-## Compile Indicator
+3. Prepare to build the app
+
+```
+cmake -DCMAKE_INSTALL_PREFIX=/usr ../
+```
-Compile Indicator with
+4. Build the app
```
-valac *.vala --pkg gee-1.0 --pkg appindicator-0.1 --pkg gtk+-3.0 --pkg libnotify -o PycastrIndicator
+make
+```
+
+5. Install the app
+
```
+sudo make install
+```
\ No newline at end of file
diff --git a/data/com.github.bgeVam.pycastr.appdata.xml b/data/com.github.bgeVam.pycastr.appdata.xml
new file mode 100644
index 0000000..c1cc2a4
--- /dev/null
+++ b/data/com.github.bgeVam.pycastr.appdata.xml
@@ -0,0 +1,11 @@
+
+
+
+ com.github.bgeVam.pycastr.desktop
+ CC0
+ pycastr
+ Cast your audio/video to kodi clients
+
+
Pycastr is a neat tool to cast your audio/video to kodi clients. This enables you to mirror your system's desktop on your TV or stream your audio to your hifi system.
+
+
\ No newline at end of file
diff --git a/pycastr.desktop b/data/com.github.bgeVam.pycastr.desktop
similarity index 54%
rename from pycastr.desktop
rename to data/com.github.bgeVam.pycastr.desktop
index 88caf07..f6df061 100644
--- a/pycastr.desktop
+++ b/data/com.github.bgeVam.pycastr.desktop
@@ -1,8 +1,8 @@
[Desktop Entry]
Name=Pycastr
GenericName=Audio/Video Streamer
-Comment=Cast your audio/video to upnp clients
-Exec=/opt/pycastr/src/pycastr-gtk/PycastrIndicator
+Comment=Cast your audio/video to kodi clients
+Exec=com.github.bgeVam.pycastr
Terminal=false
Type=Application
Icon=pycastr-status-on
diff --git a/data/icons/pycastr-status-off.svg b/data/icons/pycastr-status-off.svg
index 4d5cf94..58e8367 100644
--- a/data/icons/pycastr-status-off.svg
+++ b/data/icons/pycastr-status-off.svg
@@ -1,4 +1,4 @@
-