make more flexible