generally there are two types