prefers to use the generic functions usage