delegate for peripheral