move presentation back-end into it's own source file