completes main functionalities; adds usage;