make these more elegant