add some interface; bug fix