finish the basic functionality.