further, perhaps this should live in `models/concerns`  ?