added source code and screenshots.