added source of original code