algorithm MUST return wfle object