New fully working version.