not perfect, but it gets the job done!