[A] unstable, refactor new and check