cleaned up structure further, made positional array calculated dynamically