add feature: accept options objects for keyword arguments