throw if no selector; tests