Came across this and thought might be helpful although I've only had a quick glance. It may already have been posted elsewhere.