added parse based implementation