required functionality completed