further extracted method