Changed interface and started implementing protocol