works on mobile, cleaned up a bit