refactored many basic objects