First pass of having it work...needs cleanup.