Thank you @ianb
Your answer (and links) completely answer my question.
I will leave some links here if anyone else also encounter this problem.
Limits:
Solution