assign! type checking added