this feels like an unnecessary abstraction.