shouldn't need all these special cases now