framework and environment setup