added avl or hash options