update with suggestions from evander