The basic definition and types please elaborate