MUST... REFACTOR... GROSS CODE