add abstract negotiate() method