add comments and update __init__