updated, cleaned