Updated with more commenting