Changed interface and implementation