How to know when to stop adding abstractions?