update source code and README