Added constructors, boolean operators, move constructor, move assign