optimize add/remove
fix sync "merge"
add tests
simplify task queue — we don't need to use queue processor in most cases