setting up general structure