trying to implements our own library