types definitions