add self destory feature