public function setObject( $object, $throwExceptionOnFailure = true )
    {

        // tasks only work on objects
        if( !is_object($object) ) {
            throw new BadTaskException("A task must be object");
            return false;
        }

        $error = null;

        if( $isCompatible = static::isCompatible( $object, $error ) ) {
            $this->object = $object;
            return true;
        }

        if( $throwExceptionOnFailure ) {
            throw new BadTaskException("{$error}");
        }
        return false;

    }