i really should start doing this properly