finish most functionality for the first version