Not exactly to your question, but this answer I wrote is related to the first part, at least, so you may find it of interest.