Updated with implementation