library stuff needed