refactory for signature