Really I'm thinking all of these methods should be memoized.