extends toJSON