merged with origin version from BVLC