implemented operations