Are you sure that another layer of abstraction is required here?