issue #5183, add LayoutProtocol
issue #5183, done
issue #5183, done