finishes basic functionality