added data type neutral operations