Can't you make a trait for all of this ?