Changed Type to AbstractType, moved TypeInterface