Further Refactor