basic idea, I'm still looking through docs for libraries