I guess this is only used in one place so makes sense to put it in impl