break out functions look at types