refactored again, more objects.