working version, need comments