Major refactoring, new helper methods.