might as well add hashable too