improved variable struct