really should make this a little more dynamic