basic functinality done. needs interrupts.