i can't believe i'm handcoding all of this..