required functionality code