added all desired features