Should use an event based implementation and fall back to polling only if requisite commands don't exist.