Almost final version after big cleanup :)