basic setup and libraries