Refactor

- Consolidate same preparing logics
- use `let!` if available