first pass at proton implementation

leave this for Clebert please but feel free to  comment or kick its tyres