not try to solve all use cases