modularized and introduced pluggable user store