widgets that take in arbitrary datasets