initial custom spinner implementation, needs work