four use cases working, although not entirely pretty