make more elegant