some inner classes made public, declaration for positional factory