Refactor base_spec to read clearly, add documentation