One of the things you do when you design software is make extensive plans