full working version with features