Real close but needs more bugtesting