add half-half config for slate
better f()