added all basic functionality