Updated with better object separation