Client Side

Complete client side, requires some cleanup