First untested fully working version