I think that the first priority should be getting the functionality of the existing system right in the new, improved system, One of the things to be wary of is that we don't disenfranchise anyone. Through years of use of a system, even with a legacy system on a mainframe, users develop shortcuts and efficient ways of processing that the developers never imagined. Some are added to the basic system through change requests after the system has been in use. We have to be careful in the re-engineering that we don't leave out these tricks and techniques the users employ to make the operation of the system easier. We never want to take away anything the system does for the user, no matter how mundane it might seem, at least not without getting consent from the user (and it might be a single user). A user may not complain if they don't get some extra functionality, but they will scream if you take something away.