less flexible types but more manageable