I've put a lot of work into addressing the first and second points in the experimental branch. Check it out and let me know what you think.