Add core shim, refactor extensions slightly