This doc will outline the library architecture and describe the needed steps to add a new layer type to the library.