Use tagged types to avoid overhead of boxing.
Use tagged type instead.