Nit: should have spaces after commas, in several places.