caching a bit more reflection for objects, this can be reworked to be more adapted BTW