custom blocks functionality