working version done;