I'm not satisified with the structure or design yet, but at least it's working