make it more flexible