Nicely working version, not perfect but nice.