modulo is slowest of all, but please verify