Sure this could be done.  AvatarManager could be boiled down to just a container for AvatarData instances with an API for getting/walking the list, and this would be moved to the libraries.  Render and other Avatar-specific work could be kept in the "interface" code and would either derive from AvatarManager or use its API to access the Avatars.