michael: cleaned up some code, moved some classes; created an IntentSafetyChecker to verify if the intent can be handled