improved signiture to be more generic