add unload
prepare to separate util