reflect and interface.