return new Promise((resolve, reject) => {
			if (!keyExists(key)) return reject();
			let ref: Firebase = this.ref.child(key);
			ref.update(transformDataToFirebaseArrayValue(data), (error) => {
				if (error) reject(error);
				else resolve(ref);
			});
		});
      .then((snapshot:FirebaseDataSnapshot) => {

        let exists = snapshot.exists();
        console.log('users store @ user exists: ', exists);

        if (exists) {
          console.log('users store @ update user');
          let updatableData = this.getUpdatableData(userData);

          return ref.update(updatableData);
        }

        console.log('users store @ create user data');

        return ref.set(userData);
      });