add shareable initializer