updated with new ideas