Refactor fn exp