updated with new tests