this is my almost working project