some minor changes & attribution