update source and tests