detection algorithms