Refactoring, fixing and improving!