closes #3, add scheme support