change signatures to be more sensible