if we're going to use this in multiple areas now, then abstract it out