generalised
not defined yet