What to do when there are constant changes in the project and the methodology of execution (and payment!) is little like agile? Let's take a look at the work stages:
1) TOR - write the general composition of the work, detailing later. Prototypes - in the same way.
Draw the main user route and start with it. This will reduce the risk that a huge mountain of prototypes / TOR will need to be reworked almost completely.
2) Design - this often saves the layout sketch in case of complex animation.
Let us explain: the layout is drawn, then only the animation, not the entire page. This allows you to quickly roll out the layout of the customer and show it "alive".
3) Programming - and especially integration.
Here the methodology of startups will help - we do MVP, model, show on it the approximate work of the system to the business customer - and after approval we already do it properly.
4) How to protect yourself from endless redesign? We work so: made - show the client - show protocol - work further. Protocols helmet mail / paper - here already look for yourself, the main thing that it will confirm this or that agreement and how they changed.