This is unnecessarily complex; please clean up