added the general structure