#software-engineering In large application like omnix, we need a lot of abstraction to keep things organization and reusable. I often think that too much abstraction is bad. But I guess the problem eventually come down to when abstraction is inevitable, how can we make it easier. Therefore, we need simple abstraction. It is good for testing, readability and maintainbility.