version 3 - three detection methods