added some classes for better dispatch