implement all instractions (maybe :-P)