support function ptr, hashable, some other fixes