The same but for generic program