yet another approach to get a more flexible approach