[feature] add buffer support