smaller re-factoring