Hid shared data behind functions so we can separate implementation from usage