Updated, debuged, commented