well you cannot design for the unpredictable, but well designed code is going to make refactoring easier anyways