can set proc as attr then non proc value and vice versa
calling method with a block defs the method unless the prototype has a method, then the prototype gets the block as an arg