don't have to use inherintace, miniadt
renaming Factory -> Provider
hmm. useless functions?