Agree, might require some interface in `void action()`.