added implementation for most operators