this is the best pattern i can find