added functionality for all operations and unit tested individually, all OK apart from devide. No time to fix this and write main method