Protein-based Assemblies and Molecular Machines