slowly start refactor