Refactored models to add BaseNode & MediaObject