getting so close to implementing this properly