use 3 tier architecture to provide api/frontend/legacy features