lots of tweaking