Completed base. Modify as needed.