more type hierarchy stuff