add windows phone implementation, still need test