well you cannot design for the unpredictable, but well designed code will make refactoring easier anyways