full functioning assignment