# File lib/cgikit.rb, line 1244
        def take_value( key, value )
                keypath = key.split '.'
                object  = self
                keypath.each_with_index do |path, index|
                        writer = "#{path}="

                        if (index + 1) == keypath.size then
                                # takes value for key
                                if object.respond_to? writer then
                                        object.__send__(writer, value)
                                elsif _directly?(object) == true then

                                        object.instance_eval "@#{path}=value"
                                else
                                        _raise_error(object, writer)
                                end
                        else
                                # get and set value for the object
                                if object.respond_to? path then
                                        object = object.__send__ path
                                elsif _directly?(object) == true then
                                        object = object.instance_eval "@#{path}"
                                else
                                        _raise_error(object, path)
                                end
                        end
                end
        end