updated with more testing