protected function transferValidDataAndFilesToPool($step)
    {
        // Get active pool
        $pool = $this->getDataPool();

        if (null === $pool) {
            throw new Doozr_Form_Service_Exception(
                'Pool is invalid. Need either to be loaded first or a handler to prevent invalid call'
            );
        }

        // We prevent execution above and so we assume that components is set without further checks
        $components = $pool[Doozr_Form_Service_Constant::IDENTIFIER_COMPONENTS][$step];
        $data       = [];
        $files      = [];

        foreach ($components as $componentName => $configuration) {
            if (false === $this->hasError($componentName)) {
                $data[$componentName] = $this->getValue($componentName);

                if (Doozr_Form_Service_Constant::COMPONENT_TYPE_FILE === $configuration['type']) {
                    $files[$componentName] = $data[$componentName];
                }
            }
        }

        // Store data & files @todo make file pointers of it
        $pool[Doozr_Form_Service_Constant::IDENTIFIER_DATA][$step]  = $data;
        $pool[Doozr_Form_Service_Constant::IDENTIFIER_FILES][$step] = $files;

        $this->setDataPool($pool);

        return $this;
    }