Improving Reasoning In (Smaller) Language Models