make block and options optional, dont use partial