types and other stuff