updated source.  better standards.  still needs revisiting