simplifying implementation