buffer constructor