basic libraries and setup