updated with commenting