diff --git a/kwant/builder.py b/kwant/builder.py
index 7f9eefa0ebcdbe66c839699187c42ba888461dda..660ae1d03cf3fa77673fb83e033def773ede66cc 100644
--- a/kwant/builder.py
+++ b/kwant/builder.py
@@ -1279,7 +1279,7 @@ class InfiniteSystem(system.InfiniteSystem):
             if hasattr(value, '__call__'):
                 site_i = self.sites[i]
                 site_j = self.sites[j]
-                site_i, site_j = self.symmetry.to_fd(site_i,site_j)
+                site_i, site_j = self.symmetry.to_fd(site_i, site_j)
                 value = value(site_i, site_j, *args, **kwargs)
             if conj:
                 value = herm_conj(value)
diff --git a/kwant/solvers/common.py b/kwant/solvers/common.py
index ccb4d111d4790a65f78186e8d18ec0b942e0d0de..5323b299836b57a8afebda3c9b8a53bf6595104f 100644
--- a/kwant/solvers/common.py
+++ b/kwant/solvers/common.py
@@ -171,7 +171,7 @@ class SparseSolver(object):
         for leadnum, interface in enumerate(sys.lead_interfaces):
             lead = sys.leads[leadnum]
             if isinstance(lead, system.InfiniteSystem) and not force_realspace:
-                h = lead.slice_hamiltonian()
+                h = lead.slice_hamiltonian(args=args, kwargs=kwargs)
 
                 if check_hermiticity:
                     if not np.allclose(h, h.T.conj(), rtol=1e-13):
@@ -180,7 +180,7 @@ class SparseSolver(object):
                         raise ValueError(msg.format(leadnum))
 
                 h -= energy * np.identity(h.shape[0])
-                v = lead.inter_slice_hopping()
+                v = lead.inter_slice_hopping(args=args, kwargs=kwargs)
                 modes = physics.modes(h, v)
                 lead_info.append(modes)
 
@@ -237,7 +237,7 @@ class SparseSolver(object):
                     # See comment about zero-shaped sparse matrices at the top.
                     rhs.append(np.zeros((lhs.shape[1], 0)))
             else:
-                sigma = lead.self_energy(energy)
+                sigma = lead.self_energy(energy, args=args, kwargs=kwargs)
                 lead_info.append(sigma)
                 indices = np.r_[tuple(slice(offsets[i], offsets[i + 1])
                                       for i in interface)]
diff --git a/kwant/system.py b/kwant/system.py
index bc3b146040eedea60134d2a273e87719b9fa20a3..50e1eaf08441ce81578cc774d21a3797bdf50825 100644
--- a/kwant/system.py
+++ b/kwant/system.py
@@ -68,7 +68,8 @@ class FiniteSystem(System):
     Instance Variables
     ------------------
     leads : sequence of lead objects
-        Each lead object has to provide a method ``self_energy(energy)``.
+        Each lead object has to provide a method
+        ``self_energy(energy, *args, **kwargs)``.
     lead_interfaces : sequence of sequences of integers
         Each sub-sequence contains the indices of the system sites to which the
         lead is connected.