- Replace exception pattern with a result pattern as it better fits the usage. - merge few maps to prefer chaining to assign var after var. - Make `isDefined` type helper a common util function