have working version (at least some of it works)