added a few implementations