Nowadays Java is clearly the most popular programming language for building of complex enterprise systems. Unfortunately, quite quickly these systems tend to become huge, overly complicated and tremendously difficult to maintain while doing very little. This leads people to seek for alternate programming languages and technologies, but the problem is not so much in the language itself, but in the architecture and design that is frequently applied to Java-based systems. Should we try to fix our thinking first? I'll show a way to do it.