moved into replay-core