PPs are right, you need to have a very well defined contract and then ENFORCE it. That is usually where mistakes are made, having a great contract is fine but if you dont follow it yourself then it does nothing.