Signed-off-by: William Casarin <jb55@jb55.com>
huge refactor Signed-off-by: William Casarin <jb55@jb55.com>