factored out more things