implemented vars and methods in a probably gross way