refactor & add delphi criteria