upgraded interfaces so they support several methods