fixed functionality... for the most part