Wrote A LOT of boilerplate code