added @required and % operator