some useful interfaces