add #state() method