add an alternative implementation; it seems slower but is worth
discussion because I *think* there's a way to use this approach for
another few-times speed boost