new implement more nice syntax