diff --git a/src/account/actions.py b/src/account/actions.py
index 119db34d61e608fb8c6a8a9c4e8e932c3ee4d859..eb0dda47f2535876d24adfb7e81c7d74fe32c1f0 100644
--- a/src/account/actions.py
+++ b/src/account/actions.py
@@ -5,9 +5,11 @@ from django.conf import settings
 from django.core.exceptions import ImproperlyConfigured
 
 import ldap
+import memberdb.models
 from datetime import date
 from squarepay import dispense
 
+
 log = logging.getLogger('ldap')
 # load config
 
@@ -98,3 +100,11 @@ def unlock_account(username):
 	reason = "account unlocked by uccportal on %s" % str(today)
 	dispense.set_dispense_flag(username, '!disabled', reason)
 
+
+def create_account(member):
+
+
+	return None;
+
+
+
diff --git a/src/gms/__init__.py b/src/gms/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f14918d980c537c7dfb7e8986faa2d2464dce60
--- /dev/null
+++ b/src/gms/__init__.py
@@ -0,0 +1 @@
+default_app_config = 'gms.apps.GmsConfig'
diff --git a/src/squarepay/dispense.py b/src/squarepay/dispense.py
index fbce946c21781aeb4ab90fd60527ed758afbf57e..abd5a32312d371eb0ab3b361c219f41405576670 100644
--- a/src/squarepay/dispense.py
+++ b/src/squarepay/dispense.py
@@ -15,12 +15,11 @@ if DISPENSE_BIN is None:
 	log.warning("DISPENSE_BIN is not defined! Lookups for prices will fallback to weird numbers (for testing)!")
 
 def run_dispense(*args):
-<<<<<<< HEAD
 	if DISPENSE_BIN is None:
 		return None
 	
-	cmd = [DISPENSE_BIN] + args
-	log.info("run_dispense: " + cmd)
+	cmd = (DISPENSE_BIN, ) + args
+	log.info("run_dispense: " + str(cmd))
 	try:
 		# get a string containing the output of the program
 		res = subprocess.check_output(cmd, timeout=4, universal_newlines=True)
@@ -49,7 +48,7 @@ def get_item_price(itemid):
 		return None
 	else:
 		# return the price as a number of cents
-		return int(float(s[0]) * 100)
+		return int(float(s[1]) * 100)
 
 def set_dispense_flag(user, flag, reason):
 	if DISPENSE_BIN is None:
@@ -64,39 +63,3 @@ def set_dispense_flag(user, flag, reason):
 		log.warning("set_dispense_flag: user was not updated with error: " + out)
 		return False;
 	return True;
-=======
-    if DISPENSE_BIN is None:
-        return None
-    
-    cmd = (DISPENSE_BIN, ) + args
-    log.info("run_dispense: " + str(cmd))
-    try:
-        # get a string containing the output of the program
-        res = subprocess.check_output(cmd, timeout=4, universal_newlines=True)
-    except CalledProcessError as e:
-        log.warning("dispense returned error code %d, output: '%s'" % (e.returncode, e.output))
-        return None
-    except TimeoutExpired as e:
-        log.error(e)
-        return None
-    return res
-
-def get_item_price(itemid):
-    """ gets the price of the given dispense item in cents """
-    if (itemid is None or itemid == ""):
-        return None
-    if DISPENSE_BIN is None:
-        return 2223
-
-    out = run_dispense('iteminfo', itemid)
-    if out is None:
-        return None
-    
-    s = out.split() # get something like ['pseudo:7', '25.00', 'membership', '(non-student', 'and', 'non-guild)']
-    if (s[0] != itemid):
-        log.warning("get_item_price: got result for incorrect item: %s" + s)
-        return None
-    else:
-        # return the price as a number of cents
-        return int(float(s[1]) * 100)
->>>>>>> origin/frekk-testing
diff --git a/src/squarepay/dispense.py.orig b/src/squarepay/dispense.py.orig
new file mode 100644
index 0000000000000000000000000000000000000000..fbce946c21781aeb4ab90fd60527ed758afbf57e
--- /dev/null
+++ b/src/squarepay/dispense.py.orig
@@ -0,0 +1,102 @@
+"""
+this file contains utilities for wrapping the opendispense2 CLI utility `dispense`
+It is essentially a hack to avoid having to write an actual dispense client here.
+"""
+
+import subprocess
+from subprocess import CalledProcessError, TimeoutExpired
+from django.conf import settings
+
+from .payments import log
+
+DISPENSE_BIN = getattr(settings, 'DISPENSE_BIN', None)
+
+if DISPENSE_BIN is None:
+	log.warning("DISPENSE_BIN is not defined! Lookups for prices will fallback to weird numbers (for testing)!")
+
+def run_dispense(*args):
+<<<<<<< HEAD
+	if DISPENSE_BIN is None:
+		return None
+	
+	cmd = [DISPENSE_BIN] + args
+	log.info("run_dispense: " + cmd)
+	try:
+		# get a string containing the output of the program
+		res = subprocess.check_output(cmd, timeout=4, universal_newlines=True)
+	except CalledProcessError as e:
+		log.warning("dispense returned error code %d, output: '%s'" % (e.returncode, e.output))
+		return None
+	except TimeoutExpired as e:
+		log.error(e)
+		return None
+	return res
+
+def get_item_price(itemid):
+	""" gets the price of the given dispense item in cents """
+	if (itemid is None or itemid == ""):
+		return None
+	if DISPENSE_BIN is None:
+		return 2223
+
+	out = run_dispense('iteminfo', itemid)
+	if out is None:
+		return None
+	
+	s = out.split() # get something like ['pseudo:7', '25.00', 'membership', '(non-student', 'and', 'non-guild)']
+	if (s[0] != itemid):
+		log.warning("get_item_price: got result for incorrect item: %s" + s)
+		return None
+	else:
+		# return the price as a number of cents
+		return int(float(s[0]) * 100)
+
+def set_dispense_flag(user, flag, reason):
+	if DISPENSE_BIN is None:
+		log.warning("DISPENSE_BIN is not defined, user will not be disabled")
+		return False
+
+	cmd = [DISPENSE_BIN] + args
+	out = run_dispense('user', 'type', user, flag, reason)
+	s = out.split()
+	if s[2] != "updated":
+		# user was not updated
+		log.warning("set_dispense_flag: user was not updated with error: " + out)
+		return False;
+	return True;
+=======
+    if DISPENSE_BIN is None:
+        return None
+    
+    cmd = (DISPENSE_BIN, ) + args
+    log.info("run_dispense: " + str(cmd))
+    try:
+        # get a string containing the output of the program
+        res = subprocess.check_output(cmd, timeout=4, universal_newlines=True)
+    except CalledProcessError as e:
+        log.warning("dispense returned error code %d, output: '%s'" % (e.returncode, e.output))
+        return None
+    except TimeoutExpired as e:
+        log.error(e)
+        return None
+    return res
+
+def get_item_price(itemid):
+    """ gets the price of the given dispense item in cents """
+    if (itemid is None or itemid == ""):
+        return None
+    if DISPENSE_BIN is None:
+        return 2223
+
+    out = run_dispense('iteminfo', itemid)
+    if out is None:
+        return None
+    
+    s = out.split() # get something like ['pseudo:7', '25.00', 'membership', '(non-student', 'and', 'non-guild)']
+    if (s[0] != itemid):
+        log.warning("get_item_price: got result for incorrect item: %s" + s)
+        return None
+    else:
+        # return the price as a number of cents
+        return int(float(s[1]) * 100)
+>>>>>>> origin/frekk-testing
diff --git a/src/squarepay/migrations/0001_initial.py b/src/squarepay/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..2bcf8bd51021f2f26872c739baef515a90eaa06c
--- /dev/null
+++ b/src/squarepay/migrations/0001_initial.py
@@ -0,0 +1,38 @@
+# Generated by Django 2.1.5 on 2019-01-29 04:02
+
+from django.db import migrations, models
+import django.db.models.deletion
+import uuid
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('memberdb', '__first__'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='CardPayment',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.CharField(max_length=255, verbose_name='Description')),
+                ('amount', models.IntegerField(verbose_name='Amount in cents')),
+                ('idempotency_key', models.CharField(default=uuid.uuid1, max_length=64, verbose_name='Square Transactions API idempotency key')),
+                ('is_paid', models.BooleanField(blank=True, default=False, verbose_name='Has been paid')),
+                ('dispense_synced', models.BooleanField(blank=True, default=False, verbose_name='Payment logged in dispense')),
+                ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
+                ('date_paid', models.DateTimeField(blank=True, null=True, verbose_name='Date paid (payment captured)')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='MembershipPayment',
+            fields=[
+                ('cardpayment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='squarepay.CardPayment')),
+                ('membership', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='payments', to='memberdb.Membership')),
+            ],
+            bases=('squarepay.cardpayment',),
+        ),
+    ]