Slight changes. Optimizations to come.