fixes #97 and creates a library dictionary cache to avoid FindById recursion