Great question! To refactor is to apply what you've learned today for the problems of both today and tomorrow. Since we write lots of code and are always learning, we constantly take a step back, clean up, write (and rewrite) frameworks, and throw away huge portions of our tech stack for better stuff. Naturally we have to produce functionality too, so as with any software team, it is a balancing act to know when to stop and revisit some code, or produce new features or bug fixes. Since PayPal's codebase is so huge, you could confidently say that a significant portion of it is being refactored at any given time.