hash almost finished but untested