updated with final project requirement