implemented functioning interface