Closes #362 - Make API data objects immutable

need to override offset()and toArray() methods.   The offset() method will return incorrect offset().  The toArray() method could possibly leak reference.