return self instead of array