workbook implementation