finish basic functionality