Actually this should be call in ``initialize(...)`` since this is where the actual symbols and symbol_size is passed which makes it possible for the layers to compute the ``payload_size()``. As a second option you could use the ``max_payload_size()`` which is  part of the factory classes. Check the payload API. You can see how this may be use in the ``aligned_coefficients_buffer`` class, it is not perfect, but it works :)