* better cache * use emplace to remove copy&realloc * rebase master old-commit-hash: 841fb93def3b52cc597d6e60a51f676002e6f3ac