there are two main types