Making code maintainable and reusable with aspect-oriented programming for Objective-C