Updated with new implementations