Updated. Please read comments at the top.