implemented feature detection (but untested)