block functions improved