#97 implementation