Refactored to a better design.