updated with in-line library