Better multi-packet support.
Still need to review the public API...