all basic functionality and comments added