stable, cleaned up