factored out exercises