Add big refactor