non-generic implementation removed