add getScheme() and a useful toString()