change timeout counter to a virtual property

this allows subclasses to easily define their own timeout values