updated with some changed from the latest project I did.