An Architecture for a Generic Dialogue Shell