make code more flexible