added source and test example