completely reworking to be django-based