computing size of Tail rather than caching it
Tail now purely functional except for mutable array