code project - 2nd revision of article