Further refactoring!