almost done need to handle scaling