added source functionality