Refactor vs. Rebuild: The Next Generation Application Development Dilemma