Make valid_options a class method
Make validate_options a class method
Move macro to class level
Move wrap_scope to class level
Remove unneeded reader
Extract the scope building to a class method
Remove builder instances

All the job can be done at class level so we can avoid some object
allocation