modified for styling and function