fix exception partly, design changed