should accept options, clean up