added optimization TODO