extracted interfaces and removed laravel dependancies