delete handle, use pointer instead
improve role