modified:  fa/fp func