Second Refactor