factory method

Change-Id: I49e5d75444a4f5ce55b60945c34821f3f75e5793
build fix

Change-Id: I657f072ad93443b1716edf35872e36e986bbfd11
add gitignore, ignore intellij