less strict rules for function