added more vararg support