#2 added all special functions