add use array baceFunction, singleton