updated general structure