Refactor & reorganize