add XHC patch; cleanup, optimize