taking a stab at implementing the Apply