extract primitiveFromShape into its own module
add primitiveList