add >> << >>> & | functions