fixed many warnings and introduced the IWithKeywordParameters design