using virtual_field instead of blackhole