only do the necessary work