almost all functionality just need to make it 2 way instead of 1 way