full working version.