needs visual tweaks but works, needs labels