Most developers will acknowledge, implementing crosscutting concerns such as logging, auditing, security, and transactionality can adversely affect business logic implementation. Such concerns "seem" to increase the complexity of existing business logic, making it difficult to clearly distinguish business logic from the crosscutting concern implementation.