On surface self-assembly