some useful interface maybe;