finally came up with a system i don't hate but it needs work