adding in more factory functions