needs with-handlers added to whalesong, but works aside from that