factoring out language stuff