add signature function and interface