add parameters and object state check