generic sink interface