performance #1.
not bad for #1.