this can be invoked multiple times