required functionality completed + cleanup