Finished project, maybe in future I will rewrite it to use X