large rewrite that uses SabreDAV