pass func by value
ignore