no need for a double implementation