add object protocol