also think about implementing the dictionary based methods.