update with new and better implementations