made types slightly less hacky