use objects as objects rather than with array functions to be hhvm friendly