**TODO** - fix resize threshold - use a linked list data structure instead of a node - throw IllegalArgumentException when argument is null