fixed some misguided assignment operator implementations, appears to be bug free now