A comparison of Context-Oriented and Aspect-Oriented Programming