some useful modal types
generic logic