This feels weird. We are passing in a block object instead of a block? I would expect:

```ruby
def initialize(version = nil, &block)
  if version && block
    raise "Something about not being able to specify both a block and version"
  end

  if block
    instance_eval(&block)
    construct_build_version unless from_dependency?
  elsif version
    @build_version = version
  else
    raise ArgumentError, "build_version requires a version or block!"
  end
end
```

Right now, the block you pass isn't used. The syntax you currently have is:

```ruby
build_version lambda do
  # stuff
end
```

But I think we want:

```ruby
build_version do
  # stuff
end
```