finishes basic functionality:)