Refactor almost everything...