make signature more flexible